Implement XSS protection

Client-side HTML parsing will clean up any dangerous tags or dangerous
attributes before loading the rendered markdown into the DOM.

The XSS filter uses a pretty comprehensive whitelist with one special
case: a <code class="language-foo"> element will be allowed. This is
unavoidable because only the markdown renderer knows what language to
specify.
Restore code highlighting