Fix thread bugs with webview

Basically:
* Encapsulate all calls to WebView methods in a `post()` to the root
  view of the activity, which runs the method on the UI thread
* Also run all toasts on the UI thread