Refactor ComponentInserter and ComponentCreator.

Now, ComponentCreator creates all components, including hashes (renamed to
trees because #hash is already a method on Object) and lists.  The
ComponentInserter just creates a nice DSL on top of an existing creator.
Separate ComponentCreatorWrapper.

Now the act of registering components is separate from the act of making them.
Woo.