Support for UnitOfWork, EntityRepository, EventManager and standalone deserialization features

Refactoring of `SearchManager` into UnitOfWork style paradigm. 

Now includes support for `EventManager` registered listeners (no lifecycle callbacks yet).

Added entity respository support for easy find/findOneBy support. 
```php
// Search by ID
$entity = $searchManager->getRepository('Entities\Post')->find($id);
// Search by Term
$entity = $searchManager->getRepository('Entities\Post')->findOneBy(array($key => $term));
```
Deserialization and hydration in this case when not using the `SearchManager::#createQuery` method is handled by the registered `SerializerInterface`. 

Further abstraction of the `SearchClientInterface` returned result documents is required to support documents returned by other client adapters such as `Solarium`. Also currently limited support for collections of documents.

Backwards comaptibility is maintained with the exception of the required addition of the `EventManager ` to the `SearchManager` constructor.