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.
I think 400 or 500 is a more logical code. It is precisely a bad request (400), but also could be defined as a general server side error.