Add Contact and ContactStore

The plan is to have a `ContactStore` with a `.get(addr, type)`, `.get_or_create(addr, type)` and `for_user()`, which all return a `Contact`. Updates to the contact will all be on the app side (it won't communicate with the api). To sync the contact with the api, `Contact` will have a `.save()`.