Refactor canonicalization from middleware

This means we:
  * don't need to create RequestContext twice
  * don't need to have two different (and potentially confusing) contexts in
    which it used
  * don't have the (small) indirection of middleware
  * don't overwrite the original request information - we can now access the
    original URL and fix a bug with 410 TNA links which requires that data
Merge pull request #25 from alphagov/refactor_canonicalisation

Refactor canonicalization from middleware