Abbreviate posts exceeding 500 characters in topic list page.

Texts are cut at the last full line containing the 500th character.
If the post still has remaining text, a "Post shortened" message
is shown to the user with a link to full post.

To keep `format_text` and `format_post` separated, the implementation
is split into two parts: `format_text` will only handle cutting text
while `format_post` handle creating link to actual full post. To do
this, `PostMarkup` subclass of `Markup` is added to pass the necessary
hints back to `format_post`.

This commit also fixes a bit of formatting problem when user put a
space after newline causing <br> to generated due to the line being
treat as content rather than line break. The fix is to simply strip
lines before passing to paragraphify.
Styling changes for all topics page.

Reduce font size for 11th items and on.
Added favicon.

Only temporary. Subject to change.