Context and transformers work - 2

Continued from #1100.

Not ready for merge -- opened to ask questions on the code and get some reviews/feedback.
yeah... this has to do with the default behavior of Guice when it discovers 0-args constructors. You are getting a blank definition because it sees the 0-arg constructor and tries to construct it. At one point I considered changing the code to disable this functionality but it didn't seem worth it at that point. Would you find it sufficiently less confusing if it only bound constructors that were annotated? I can show you how to go about changing that functionality, it just requires minor tweaks to every class that we currently inject without an @Inject annotation.