Split form and model fields into string- and int-based versions

Require callers to be explicit about whether they'd like to coerce input with the `from_index` or `from_canonical` methods.

`forms.CanonicalEnumField` exactly replicates the current `forms.EnumField` functionality, but drops support for old-style dict-based enums. `models.LaxIndexEnumField` replicates the current `models.EnumField`.

By design, there's no ``VARCHAR``-backed model field. If we ever want one, we can add a `models.CanonicalEnumField`.