Optimized TableTypeDescription

TableTypeDescription now has the FlagsAttribute and every item is now a single bit.
TableType no longer have a List<TableTypeDescription> and instead uses only one TableTypeDescription which contains all the flags which replaces the Distinct() function. 

Using flags means we can change TableType to a struct so it dont need to allocate space on the heap.
The getEnumerator() have been replaced by HasTypeDescription() and ToEnumList()(which needs to be optimized)