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.