[PoC] Create Archetype Component and Bundle to replace Product Prototype and allow for inheritance

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| 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
- [x] Replace Product Prototype with Archetype
    - [x] Update services
    - [x] Update Doctrine mapping
    - [x] Update validation
    - [x] Update translation fields
    - [x] Map parent and child via LoadMetadataSubscriber instead of XML to make mapping valid
- [x] Pass feature tests

In `o2o` (same goes to `o2m`) we use owning side as column name, in `m2m` we use both in column name with order in which it was declared.