high effort commit message
Convenience macro for accessing entity components

A side-effect of this is that the component name is accessible on
both the type and instances of the type.
Free old component when its replaced with a new one
Only run systems on entities that satisfy component requirements
woah virtual reality destructors
unique_ptr's are cool

<3 sneaky
Collect all component field state changes into a single vector

A 'state change' contains all the information to convey the change
of an entity's state in a stateful manner. Each change includes
the unique entity ID, the component's name, the component field's
name and the new value of the named field.

Entity collections collect all the state changes from their entities
which in turn collect all the state changes from their components.

Currently these state changes are represented by a tuple. It will
be the responsibility of the MessageProcessor to convert these to
messages to be sent to clients.

The current implementation will likely need optimising as currently
it requires iterate on all components in existence. An alternative
would be to allow component fields to report their state change to
the entity collection themselves at change-time, rather than
having to collect all the changes after the fact.
Add sending of entity state changes
Begin to implement handler for entity.state
Construct missing entity components when handling entity.state

This requires the entity collection to maintain a table of possible
component types and a way to constrcut each one.
Allow components to set stateful field values from JSON

This makes it so that StatefulField's register a 'setter' on their
parent Component which maps to the field's string name. When
setField() is called on the component it looks up a setter for
the corresponding field name and calls that setter, hence defering
the actual value setting to the StatefulField.
Actually set the component field value

This uses overloaded conversion operators to convert the json11
objects to the field's native type.
Remove prints
Add component allocators

These are to be used when registering components on entity
collections.
Move stuff out of entity header
Being adding documentation for entity::
Some more docs for the entity system
Merge pull request #30 from Holiverh/entity

Entities