Use more secure error for invalid pagination ranges

* Disallow limit and offset clauses too large for MySQL.
* Make better use of the Offset method rather than allowing it to be touched directly elsewhere.
```
404 Not Found
The requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible.
```

```
400 Bad Request
The server cannot or will not process the request due to something that is perceived to be a client error.
```

GitHub is incorrect in issuing a 404 for a resource that exists but is not available to the current authentication context. That should be a 403 because the request is valid and the content exists, but the server refuses to honour the request.

```
403 Forbidden
The request was a valid request, but the server is refusing to respond to it. Unlike a 401 Unauthorized response, authenticating will make no difference.
```

I still maintain that 400 is the correct response since the request is invalid because a provided field is out of bounds.