[WIP] Create Archetype Component and Bundle

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | #2001
| License       | MIT
| Doc PR        | pending

The new Archetype component and bundle is designed to replace the existing Product Prototypes, introducing inheritance between archetypes, and to be abstract, so any model other than a product can be the subject of archetyping.

I'll probably need some assistance with resolving the interfaces to the correct Doctrine mapping, or whether my implement is correct or not.

- [x] Create Archetype component
- [x] Pass specification tests
- [x] Create Archetype bundle
- [ ] Replace Product Prototype with Archetype
    - [x] Update services
    - [x] Update Doctrine mapping
    - [ ] Update validation
    - [x] Update translation fields
    - [x] Map parent and child via LoadMetadataSubscriber instead of XML to make mapping valid
- [ ] Pass feature tests

Unfortunately, I am unable to use the Tree Doctrine extension like Taxonomy does, because the parent mapping has to be done dynamically for each subject (eg. `Product`) and trying to hook into the DoctrineExtensions metadata config is really hard: https://github.com/Atlantic18/DoctrineExtensions/blob/master/lib/Gedmo/Tree/Mapping/Driver/Xml.php#L170