Support 'allow_alias' option in 'enum' declarations.

Closes #56.
What is the actual possible runtime type for the value? This seems overly defensive - I would expect the value will either be a string or a Boolean, not randomly changing from run to run.