Re-think component system, now based on Artemis.

Its a three tier system

- A ComponentManager 'manages' component relationships with their holders
  as well as stores systems.
- A ComponentSystem processes holders with certain components. A great use
  for this is MovementSystems where you only want to move entities who
  have a Position and a Velocity component.
- A Component and a ComponentHolder. A Component is a data holder who has
  zero logic and serves to simply get/set data. A ComponentHolder serves
  as a marker interface so we know who the holder is in the Component.

Signed-off-by: Chris Sanders <zidane@outlook.com>