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.
Just to be sure if I get it right, if someone does the following:

    d = km.get_key('user@domain', OpenPGPKey, fetch_remote=True)
    d.addCallback(lambda _: someStuff())
    d.addErrback(lambda _: failGracefully())

If the key is not found (either in local storage and in server) then `failGracefully()` will be called, right?