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.
I have not used either `defer.succeed()` nor `defer.fail()` before, and so my question here might be misleading.

Why is it interesting to return deferreds that already had their callback or errback called? Won't this be a problem when the reactor tries to call the callback or errback of these deferreds?