port to new soledad async api

**Not ready to merge, missing changes in leap.mail and maybe other to be compatible with the new API**

It needs to synchronize the merge with the soledad async API and the upgrades in leap.mail.
Not sure if I agree with your description. From the point of view of the user of this method the returned deferred gets fired after the key is already inserted in the local storage. So if you attach a callback your callback will be fired when the key is in the storage.

My English is crap and there might be a better way to rephrase that.