Refactored Symbol hierachy, makes all symbol's derived types can shares the flags definition
Allow construct Enum's associated values
Unit tests refactored