Improve enum deserialization

  * No more reflection.
  * Dashes now permitted and replaced with underscores.
  * Tests refined so each one is testing only one thing.