PIM-3250 : inject default locale and scope in PQB and be able to change them in a filter

The goal is to be able to,
 - define default locale and scope when create a PQB
 - select locale and scope to use in filter itself

Expected PQB API, https://github.com/akeneo/pim-docs/pull/26/files

 - [x] Define default locale and default scope in PQB
 - [x] Be able to change the locale or scope to use in filter / sorter (allow a filter on fr_FR and another on de_DE in same query)
 - [x] Limit the use of CatalogContext to make the selection of locale and scope more straightforward
 - [x] Clean the ProductRepository to limit the use of PQB and remove useless / not implemented methods
 - [x] throw exception when try to use not defined locale / scope
 - [x] add default value null for locale and scope in PQB Factory

| Q                    | A
| -------------------- | ---
| Bug fix?             | N
| New feature?         | Y
| BC breaks?           | Y
| CI currently passes? | Y
| Tests pass?          | Y
| Scenarios pass?      | Y
| Checkstyle issues?*  | N
| PMD issues?**        | N
| Changelog updated?   | Y
| Fixed tickets        | PIM-3250
| DB schema updated?   |
| Migration script?    |
| Doc PR               |
they may contain null values (comes from ProductQueryFactory), I would love make them mandatory and check that locale and scope exist for real but it requires more re-working on some repository methods as findOneByX which use the PQB but doesn't know the locale and scope, which is not a big deal when you're filtering on not localizable and scopable as id or sku.