add stream and pagination for contacts

I'm in favour of moving the cursor mangling in here if possible. Note that if ``_paginate`` supports both contacts and groups it can't access ``contact.key`` or similar (perhaps the parameter needs a better name or we should pass in just the keys?).