API changes based on feedback from @jcrossley3 and @bbrowning.

1) s/backingObject/implementation/
2) s/newComponent/create/
3) ComponentProvider::create takes a name and options arguments
4) Component is an interface
5) removing the Component suffix of each module's impl class name,
   instead having its name match the uppercased key name
6) CompomentProvider is now parameterized with a generic