Allow blocks in projections
Broke the Deserializer into a helper class.

This will get a lot easier with macro bundles... For some reason packing macros in traits is not an option at the moment, only classes with abstract types work. The good news is that traits can be mixed into that. Effectively you can make a base class of type
> abstract class Foo[C <: Context](val c: C)
and just extends that with traits of the form
> trait Bar[C <: Context] extends Foo[C] { ..blah.. }
and mix them together to form your implementation.