Implement contact creation.

Shouldn't we assert on `key` and `contact` first, then fetch `new_contact` and assert on that?