Components

This pull request is where I'll add an implementation of components as specified in #1290.

To be implemented:

 - [x] General loader infrastructure (ability to register multiple loaders)
 - [x] Caching loaded definitions
 - [x] Default loader
 - [x] Component binding