This also adds the ability to retrieve an Asset by what it provides instead of by name.
All components now sit in there own distinct namespaces. This does not however mean that all components are completely stand alone and independent of some other component, but it does clean up the API directory a little. The documentation will now need to be overhauled to coincide with these changes. Fixes #39