Improve test suite

Some small fixes for simple enums:
* Return choices in a defined order
* Check that values are hashable on construction (otherwise the enum blows up on reverse lookups)

Improvements to test suite:
* Split into multiple files
* Add tests for simple enums
* Make rich enum tests more straightforward and complete

Also, I was hungry while I wrote these. :egg: :bread: