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 Engine
* Components are freed when they're removed from the Entity or when an Entity is freed.
* Engine has a pool of Entities
* Entity pooling is enforced by making its constructor package-protected and, thus, adding a createEntity method to Engine.

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.