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.
This needs an http error code. I actually do recommend 404 as it's appropriate for both meanings of 404 (ie. something not found or we don't want to tell you you found something you're not supposed to find).