(INCOMPLETE) Components

This pull request is where I'll add an implementation of components as specified in #1290.

Please note that it's **not yet ready for merge** as it's incomplete. I'll amend this comment when it is ready. The reason I'm posting it now is to give a chance for other KO team members to start reviewing the code if they wish to.

To be implemented:

 - [ ] General loader infrastructure (ability to register multiple loaders)
 - [ ] Caching loaded definitions
 - [ ] Default loader
 - [ ] Component binding