Interface mockup

These are the first steps to define what is needed to synchronize an ObjectManager based API with an Elastica index (or type).

Final aim is to keep anything possible quite simple and work with collections for results (if you notice it, the repositories implement only the `Doctrine\Common\Collections\Selectable` API), which allows seamless pagination, caching, lazy loading, etc.

Currently involved:

 * A "Manager" object that stores objects into an index
 * Two serializer interfaces that extract data from objects
 * Two repositories (one capable of working with `Elastica` documents, and one capable of working with ObjectManager's objects)
 * A "Synchronizer" which should store changes applied to objects in the ObjectManager and apply them to the Manager
 * Criteria objects specialized for object type and query string search over the index (will need custom expression visitors)

I will work on a YUML graph to make things a bit clearer

/cc @macnibblet