DRY up making UIWebViews that feel more native-y.
Spoil a spoiler when tapping where an image should go.

visibility:hidden disables click events, but opacity:0 does not.
Formatting.
Theme profile view scroll indicators.
Fix linkified images.

* They are no longer unintentionally spoiled.
* They have their own obviously dedicated attribute.

Bonus: tidy up spoilers CSS implementation.
Change data-avatar attribute to data-awful-avatar.

So we're consistently prefixing stuff.
Render private messages without using AwfulPostsView.

Largely a prototype for removing AwfulPostsView. In terms of rendering, private
messages are effectively a thread with one post, so it's a good test case.
Snag the "database unavailable" error page for possible future use.

Can't reliably trigger it, so even though we're not using it at all it's worth
grabbing.
Break retain cycle using WebViewJavascriptBridge.
Set profile dark mode via WebViewJavascriptBridge.

Gonna aim for no directly calling JavaScript wherever possible.
Formatting.
Send element rectangles as CGRectFromString-compatible strings from profile web view.

Same as private message web view.