Adds Entity and Component pooling

Changes summary:

* Uses Pool, ReflectionPool and a non static version of Pools from libgdx (added to utils)
* Pooled components are obtained through PooledEngine
* Components are freed when they're removed from the Entity or when an Entity is freed.
* PooledEngine has a pool of Entities
* Engine#getSystem()
* Entity#hasComponent()

API changes are minimal and this would greatly improve performance for short lived entities like bullet. Up until now the user would need to micromanage and pool those manually.

Of course we can discuss the implementation details, I'm happy to make changes if necessary.