add stream and pagination for contacts

 - It sorts according to contact key because it's mostly unique, to allow for the same sort order every time. If a cursor is given, it then drops items from the list until the cursor is found, or in the case of the cursor group being deleted, the place where the cursor would have been. It then finds the next cursor (key of last item returned). Cursor is `None` if this is the last page.

 - It's meant to be a temporary function until it gets replaced with riak pagination.