Add request object

This is essentially a bag of everything relating to the request.

Fixes #552.
I agree, I kept it this way to match PSR-7 though. I've no strong argument either way, but it's nice being compatible-ish with PSR-7.