Make tests more complete and explicit

Split tests into separate files, and make them more explicit (though
slightly less DRY).
Remove outdated comment

The .from_index method was purely for consistency when we supported
access with slice notation; now it's essential.
Small fixups for simple enums

For testability, return choices in a known order. Also, check that all
enum values are hashable (otherwise enum blows up when trying to do
a reverse lookup).
Add tests for simple enums