[POC][WIP] PIM-3260 : product update api

Propose a way to easily mass update products via an explicit API.

Refactor existing API to make it more SOLID and straightforward.

Doc in progress https://github.com/akeneo/pim-docs/pull/35

 - [ ] support for attribute types
 - [ ] use it in edit common attributes
 - [ ] update the product builder to centralize product value creation/update
 - [ ] specs / behat
 - [ ] technical doc

Do we expect the validation inside the updater ? -> No, should be done in the caller
Do we expect the persistence inside the updater ? -> No, should be done in the caller

| Q                    | A
| -------------------- | ---
| Bug fix?             |
| New feature?         |
| BC breaks?           |
| CI currently passes? |
| Tests pass?          |
| Scenarios pass?      |
| Checkstyle issues?*  |
| PMD issues?**        |
| Changelog updated?   |
| Fixed tickets        |
| DB schema updated?   |
| Migration script?    |
| Doc PR               |
naming, 
+    // setData with attribute and raw data ?
+    // setValue with product value only ?