Refactor Your Way to a Dependency Injection Container

I've had some problems with pushing everything into one 'configuration' class that just calls `new` to assemble the runtime of the project. Namely, that class gets large and hard to understand (maybe I make too many small objects?).

I've ended up breaking up that class into a small 'dsl' like layer that uses jmock-style (this was in JavaScript though) high level language to describe each separate subsystem, then the entry point calls upon those to create each subsystem, then wires the subsystems together as they need it.