Add support for Enum types

Enum type can be decomposed into its variant index (uint) and rest of the data whatever they are.
Fixes #21