Add context propagation middleware

/to @ritch @bajtos @piscisaureus 
> There are going to be transport specific context for each of the protocols we support. Maybe in theory, the rest middleware should set up req/res instead.

The idea is that you should write methods that are unaware of the transport. This is really great for testability since you don't need to setup the transport to test the method... you just call it. It also means your code will work from node and over your desired transport. The goal is a clean separation between transport code and application code as well as being able to serialize the spec required to call the method over the transport.

The context object really helps shorten the list of arguments you have to pass to a method. It also removes the need to create a mapping to an argument (eg. the current user) that would be the same for every method.

Our goal should be that middleware (which ARE transport specific) parse out useful info (that is not transport specific) and provide that in the context.