Splitting demo from API, some initial implementation

This commit leaves a particular TODO that is blocking for kbpgp
in freedom - specifically, window.crypto/crypto.getRandomValues
needs to be visible from the WebWorker using kbpgp. Since these
are native code they are not normally visible in WebWorkers.

Suggested workaround: put crypto/getRandomValues in freedom core.
This will make the dependency asynchronous, but at least it should
be there. Once this is done, this repo can be revisited with an eye
to finishing out and testing the kbpgp -> API methods layer.