add stream and pagination for contacts

We should probably always paginate keys instead of objects. That makes things easier, because you wouldn't have to deal with the difference between contacts and groups.