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.
looking at the documentation of some twisted modules, it seems to be more standard to document it in the return docstring if it's a defer:
```
   8         @rtype: L{twisted.internet.defer.Deferred}
   9         @return: A Deferred which fires with C{None} when the user is
  10         added, or which fails with
  11         L{twisted.words.ewords.DuplicateUser} if a user with the
  12         same name exists already.
```