Add a loader in the EnumDataRegistry so that we can load EnumData

from a table rather than just an enum.

The good thing with this appraoch is that the Enum is still loaded the same way
via the EnumDataRegistry. All the loading from the Table is hidden from the caller

We can add support for multiple loaders in the future if needed.