///|
/// What a caller may opt in to on top of PurePy.
///
/// PurePy is a subset of Python and a specification, and this module ships it
/// exactly. But an embedder is not always writing to the specification: one
/// wants `a and b and c`, another wants a `str` with methods, and forking the
/// library to get either is a bad trade. A `Profile` is how they ask.
///
/// Three things about it are load-bearing.
///
/// * **`core` is the default everywhere.** Every function that takes a
/// profile takes it as an optional argument defaulting to `core`, so a
/// caller who never heard of profiles gets PurePy, message for message and
/// verdict for verdict. That is not a courtesy: `test/golden/` and
/// `test/conform-policy.json` are the reference checker's answers, and a
/// profile that moved one of them would have broken the thing being ported.
///
/// * **A profile only ever ADDS.** It is built from `core` by adding
/// features, so there is no way to spell a SUBSET of PurePy with one, and a
/// program accepted under a poorer profile is accepted under a richer one.
///
/// * **A profile may open a `not_yet` gate and may not lift a
/// `prohibited` one.** Both refuse with the same `