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.
Your logic is different than mine. In your case *failGracefully* will be fired if *get_key* fails or if *someStuff* fails, in my code *failGracefully* can only be fired by a failure in *get_key*. But in this piece of code both things do exactly the same because my *someStuff* (*key_found*) don't return any failure.