add stream and pagination for contacts

We would need to then change the way that _paginate works, or have a separate _paginate_keys?