Changed components so that they contain their own type name used by the component registry. Added a way to add components to the registry with a template type. Component registry now uses const char* instead of std::string as we don't really need any functionality of std::string here. Added serialization to the entity, right now it just serializes the components, might want to add more information just as groups/tags etc.