We want to allow for archetypes with orientations, along with also
sending orientations in Create ops. To do this we need to combine
these two rotations into a final orientaton.
By setting "objtype" to "archetype" on the argument sent it will be
handled as an archetype instead, and the contents of "entities" and
"thoughts" will be merged into the parent archetype.
This required the EntityKit to be refactored, so that most fields are
pushed into EntityFactory. Due to the nature of how the rule handlers
and the factories interact the code is pretty messy. It works, but it's
tangled and not really clean.
An archetype is used for creating new entities. It contains one or many
definitions for entities, along with relationship between them. It also
contains any extra data needed for a world simultion, such as thoughts
and knowledge.
Archetypes should be seen as blueprints for entity types, as they
describe how new one should be composed. They are created just as
regular entities, using the existing Create op functionality.
As an example, there should be one "human" entity type, with archetypes
such as "settler", "merchant", "soldier" etc. This differs from the
current setup where each of these are separate entity types.