Improve output normalization with custom parser.

I have come up with a normalization that seems to overcome all trivial errors.

The details are well explained in the doctests for `normalize_output`.

This uses Python's HTML parser, and formats the output in a way that is useful for our use case. No more BeautifulSoup dependencies.

Built on top of #30, please only consider the last commit of this PR.

The number of errors falls from to:

    gfm              20  20
    kramdown         23   7
    multimarkdown    27   9
    pandoc           41  13
    redcarpet         0   0