Type Safety for enumerable items

*Added constructor properties to prototypes for inheritance
*Added freezeEnum property to Enum to ensure type safety for instances of enum types.
Please see the comments for more details.