Split form fields into canonical and index types

Require callers to be explicit about whether they'd like to coerce
form input with the `from_index` or `from_canonical` methods.
(`CanonicalEnumField` exactly replicates the current `EnumField`
functionality, but drops support for old-style dict-based enums.)