Separate HTTP 500 error handling

Separate out the error handling for 500 errors. Previously the code
assumed that all exceptions in the error handler were a subclass of
HTTPError. This is *not* the case if one handles 500s, so they must
be treated separately.

This commit also refactors 401 handling back into the main HTTP error
handler.
Merge pull request #280 from alphagov/better-error-handling

Separate HTTP 500 error handling