Revert "Use Werkzeug Response instead of raw WSGI"

This reverts commit f19b31c801e327678a903dfba34dbf5972eb773d.

I thought this was broken but it really wasn't.
Add Jinja handler

This allows us to use templates responses out of the box.
Ensure rendered template gets converted str

Werkzeug expects strings/bytes, rather than unicode strings.
Add jinja2 to dependencies

Forgot to add jinja as a dependency, now that we have template
handlers.
Improve comments on routers
Add `response` module and passthrough handler

This commits adds a `response` module, which comes with pre-baked
responses to make common response patterns easier.  It also
adds a `handlers.passthrough` which, given a pre-baked response,
returns a request handler that always returns that response.
Add basic OK response
Convert response.ok to fixed value
Fix typo in passthrough handler
Convert method_not_allowed response to value

This commit converts `response.method_not_allowed` from a function
that returns a response (tuple) to just the response tuple itself.
This'll keep things simpler for people, especially to differentiate
handlers (as functions) from responses (as values).
Check for bad methods in method_router

Prior to this commit, if you used a `routers.method_router`,
and it got passed a request with an HTTP method not specified
in the method_router routes, you'd get a server exception.

This commit makes it so that instead of a getting a server exception
on an unknown HTTP method, instead you get HTTP 405 Method Not Allowed.
Improve comments and tests for resource_router
Clarify variable names in resource_router
Fix embarassing name conflict in routers
Remove duplicate test