Add `sys.abi_features` to make information about the interpreter ABI more accessible

@pitrou, you are right, that is done; I was thinking of the packaging environment markers that don’t have access to that information. However, as @timfelgentreff points out, this is not a universal way and I do think that it would be good to make this information more readily available.

@encukou, I agree with your suggestion to make this information more general. Indeed, an initial attempt at a reference implementation gathered feedback from @FFY00 and others that points in the same direction.
Keeping in mind your proposal for module slots, I think it would be best to have a static registry of abi information, active and inactive features, that can be queried both for compatibility checks and environment marker generation.

Perhaps something like

struct PyAbiFeature {
    int index;
    const char *name;
    const char *tag;
    const bool available;
};

static struct PyAbiFeature Py_ABI_FEATURES[] = {
    {0, "free-threading", "t", Py_GIL_DISABLED},
    {1, "gil-enabled", "", !Py_GIL_DISABLED},
    {2, "debug", "d", Py_DEBUG},

possibly wired into sys in one way or another?