Implement contact updating.

I'd rather just pass on the exception here. The fact that we're getting an exception in the first place strongly implies that the data is not being stored, which is something I'd want to know about as a client.