Changes error handling from a view decorator to middleware

As a result, only instances or children of RenderableError are caught by the middleware.  This is different from the previous behavior, which caught and rendered all errors.
The following 5 tests are nearly identical.  You might consider pulling out some of the logic into a common method where you can then have one-liners for each of the exception types paired with a status code.