[WIP] Poc/grid mongodb

The objective of this PR is to prepare the grid support of MongoDB ODM.

First, we need to identify storage agnostic parts and ORM / ODM ones, following explaination can evolve depending on first experiments.

2 datasources,
 - a pim_orm datasource, extends orm datasource from oro/platform to add custom extensions (selector and sorter) and allows to configure queries from repositories (used for all basic entities as channels, families, attributes, etc)
 - a pim_product datasource with a new config, a storage parameter (odm or orm), this source is instanciated with pim_catalog.manager.product (based on PIM config it uses DocumentManager or EntityManager and related repository)

Extensions are responsible to register appliable services (filters, sorters, selectors, pager, etc), to achieve that, they check datasource type (as in laboro/platform) + the storage parameter, we'll perhaps need to introduce convention for services naming.

Today we finish the "hydration" of products as array in the OrmDatasource, we need to delegate this operation to some new objects to ensure that products from ORM or ODM will be represented with the same format, with this approach, we can re-use the whole formatter part (used to display values in grid cells).

We need to refactor flexible filters and FilterUtility to make filter storage agnostic and delegate the query part to the product repository.

We (perhaps) need to introduce a grid_attribute_types.yml per storage (cf storage_driver in PimCatalogExtension) to be able to configure different services, for instance, in MongoDB implementation, the product values are embedded documents, so, we don't need to use a selector on values, they are already available when we fetch a product but, we still need to fetch attribute options with a selector in both cases.

Oro extensions,
 - ./Extension/GridViews/GridViewsExtension.php is storage agnostic + applied on any datasource
 - ./Extension/Action/ActionExtension.php:class is storage agnostic + applied on any datasource
 - ./Extension/Formatter/FormatterExtension.php is storage agnostic + applied on any datasource
 - ./Extension/Toolbar/ToolbarExtension.php is storage agnostic + applied on any datasource
 - ./Extension/OrmFilterExtension.php uses an OrmFilterDatasourceAdapter
 - ./Extension/Sorter/OrmSorterExtension.php uses query builder + few methods
 - ./Extension/Pager/OrmPagerExtension.php uses an Orm Pager + query builder

Akeneo extensions,
 - ./Extension/Selector/OrmSelectorExtension.php uses query builder + few methods
 - and overriding of Filter, Sorter, Pager

To continue ...

| Q                   | A
| ------------------- | ---
| Bug fix?            |
| New feature?        |
| BC breaks?          |
| Tests pass?         |
| Scenarios pass?     |
| Checkstyle issues?  |
| Changelog updated?  |
| Fixed tickets       |
| Doc PR              |