Somebody else seems to have done a good job of polyfilling TextEncoder, so let's use that.
Add Modal.createDialogAsync, which can be used to display asynchronously-loaded React components. Also make EncryptedEventDialog use it as a handy demonstration.