Unwrap only one level of `Option when requested.
Cleanup. No more class name freshening (don't append unpredictable
number if there's a name clash; user is responsible for naming types
appropriately)
Fixed broken test. We need more tests for variants but it's looking
good.
get/set accessors for variants now use camelCase. Tags still use
UPPER_CASE as it is normally practised with enums. The enum is now
defined in a separate file, no longer as a child of the class.