Blueprint

Ported the blueprints from data to core.

For now components and controllers can have blueprints. These are optional and loaded on demand. Blueprints can be hierarchical so they can reflect the component or controller classes.

The ComponentDescription is deprecated but still functional.