Fixed #22058 -- Refactored handlers and added a generic mechanism to deal with client and server errors.

**What is done**:

- Refactored handlers into generic ones.
- Deprecated original default views.
- Added generic views.

**Improvements Required**:
- Docs build have several warnings due to removing original handlers.
- A writeup for new views.

**Suggestions**:
- We could add two generic exceptions also: `HttpClientException` and `HttpServerException` to add onto the functionality.

I think we can use `MSG[status_code]` here -- are there any examples where the status code wouldn't be in the dictionary? If not, a better fallback than `None` (which there is no need to specify as it's the default if `.get()` doesn't return a value) would be something like `'HTTP %d' % status_code`