[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.


![image](https://cloud.githubusercontent.com/assets/5972864/5427264/b84db3f2-838a-11e4-9c00-8246c5bf8de4.jpg)


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

Sure. As the relationship is unidirectional - parent archetype is unaware of its descendants - then `!$archetype->hasParent()` makes more sense :+1: