Better type coercion for Enums

- Improved handling on `Enum` values during type coercion
  - Checks _UPPER_UNDERSCORE_, _lower_underscore_, _lower-hyphen_, _lowerCamel_ and _UpperCamel_ options when coercing strings
  - Exports the function used, allowing it to be registered with a default value for unparseable input
  - Configures `JmxAgentModes` with `AUTODETECT` default as an exemplar
  - Adds unit tests for the enum coercion functionality
- Changes the type coercion registry to use a `Table` with row and column lookup for functions, indexed by classes