Add Bjoern Hoehrmann's DFA-based utf8 decoder to source code.
Pre-multiply DFA table entries by 16 to save a shift.
Replace the UTF-8 decoder with a DFA-based one found on the web.  Benchmark
results:

Before:
hacker_news.html: 10877 microseconds.
html5_spec.html: 1834991 microseconds.
xinhua.html: 50147 microseconds.
yahoo.html: 57772 microseconds.
google.html: 53137 microseconds.
bbc.html: 17078 microseconds.
arabic_newspapers.html: 15892 microseconds.
wikipedia.html: 119395 microseconds.

After:
hacker_news.html: 6638 microseconds.
html5_spec.html: 1080979 microseconds.
xinhua.html: 29511 microseconds.
yahoo.html: 33294 microseconds.
google.html: 30626 microseconds.
bbc.html: 9860 microseconds.
arabic_newspapers.html: 8340 microseconds.
wikipedia.html: 68557 microseconds.

These are total parse times, not just in the UTF8-decoder, so after this commit
you should expect speedups of roughly 50%-2x in overall parsing on common input.
Slight misunderstanding; don't swallow invalid replacement characters that are
the beginning of a run, create a separate replacement character for them.  This
matches the description on

http://encoding.spec.whatwg.org/#utf-8-decoder

This is slightly different from the old behavior in that there is no
special-casing for 5-7 byte codepoints.  This seems to have dropped off the
spec; now they should be handled like any other invalid first byte.
Remove commented-out code.
Fix a comment that was out of date.
Merge pull request #253 from nostrademons/utf8_decoder

Utf8 decoder performance improvements