enum types in base, based on examples/enum.jl

adds additional syntax, functions, supertype, bugfixes to enums:
@enum X a b c=1 d=2
@enum_mask Y a b c d