Re-work pagination and add tests.

Here's a first version. This version doesn't include `next` or `previous` in the metadata if a number for page can't be found. This is only really expected to happen when `next` or `previous` are null for the first and last page. An alternative would be include `next` and `previous` in the metadata and set them to -1 for the first and last pages. What do you think?

I also still need to write user facing docs but I'm waiting for that to be setup.
Sorry to go in circles on this, I just read the DRF documentation on pagination a little closer, and I think you were right to name this argument `url`.  I didn't realize DRF was returning an actual URL (relative or absolute depending on context), for some reason I had it in my head that only `?page=1` was being returned all the time.  Can we revert your last commit?