Libertree.render accepts text and settings

Settings are passed as a hash-like value.
use text_rendered in ChatMessage and Message

that's better than using Libertree.render directly.
support additional render stages

a render stage operates on a parsed HTML document and returns a possibly
modified parsed HTML document.  We support pluggable render stages
because it would be terribly wasteful to parse a rendered string again
to an HTML document just to tweak a few things.
implement a much simpler comment username linker

Slight disadvantages over the previous version:
- it only works with usernames (not display names)
- it doesn't work with partial usernames

Some Javascript snippet should assist a commenter by inserting the
username for any detected (partial) display name.
link usernames: ignore case
single post view: fetch 50 comments instead of 8

it's no longer that expensive to render them.
add comments
update comment username linker tests

one is still failing