Incorrect Haskell instances for non-default-valued enums
There are some problems with the Haskell instances generated for C++ enums that aren't simply valued 0, 1, 2, etc. The default
succ implementations use
+/- 1 so gaps will cause them to throw exceptions. Also
maxBound take the first and last values listed in the definition, and I'm not sure we should rely on that order for code generation.