Interface and base implementations for EnumData and EnumDataStore.

Also included a Registry to be used by Application
I am not sure why you think they look similar. One stores the EnumDataStore with a given name, and the other stores an Enum data.

The reason we need the class is so that we can initialize just one Registry in the AssistantApplication and access the global instance from there. This way the enums are the enum data stores are initialized only once.