Bug 1097579 - Refactor Multicontact code to prepare it for contacts datastore implementation

...
Still have to make sure with baku that this mimics the behavior of `Datastore.get`