Improve test suite

Some small fixups to 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