Soycode newapi

These commits change the API to a simpler four functions (as discussed in https://github.com/freedomjs/freedom-pgp-e2e/issues/4), and get it working for the current relatively simple tests and demo chrome app. The main thing that could probably use more cleaning up is the use of e2e.async.Result.getValue (and perhaps async/promises in general) - the e2e people have told me they plan to deprecate that within a year. And also, while I for one like this simple API, we will likely need to extend it if we want to persist encrypted data to disk (i.e. https://github.com/freedomjs/freedom-pgp-e2e/issues/7).

Feedback welcome, and I will likely poke at it a bit more to see if I can make the promise/async stuff a bit better (the exportKey function in particular is hacky, but it was the only way I could get it to not complain for the time being - perhaps getting the e2e people to allow their exportKeyRing function to select only public key would be ideal in the long term).
Tried removing but this looks to be necessary to do the logging on e.g. line 242 in this file. Could refactor that logging to be simpler and remove this if desired, or leave it in (though if this sort of error logging is useful the type should perhaps be put in some more reusable spot).