Improve middleware performance

Use `Proc` objects in the different middlewares to set `:request` and `:context` data.

These objects are called when the payload is being prepared, in the same way that `data[:person]`.
I've been reading a bit about Procs vs Lambdas in Ruby.

I'm not sure this is relevant but wanted to make sure you were aware:

http://www.skorks.com/2010/05/ruby-procs-and-lambdas-and-the-difference-between-them/
```
Using the proc method in the Kernel module. Being in the Kernel module, this method is globally available. It is basically equivalent to Proc.new in Ruby 1.9, but not in Ruby 1.8. In Ruby 1.8 the proc method is equivalent to lambda. 
```