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.
For better future reference, maybe we could change the `privkey` variable name to `signkey` and use keyword argument for the `sign` parameter in the `encrypt()` call, like this:

    def encrypt(keys):
        pubkey, signkey = keys
        return self._wrapper_map[ktype].encrypt(
            data, pubkey, passphrase, sign=signkey, cipher_algo=cipher_algo)