Support JavaScript and HTML files

This adds support for *.js, *.html, and *.htm.

JavaScript has the same comment and string syntax as C++, and so isn't terribly interesting here.

HTML support is more interesting and I'm not so sure about the approach I took. It has two components: ordinary <!-- --> comments, and embedded languages. It understands both script ... /script and style ... /style and switches to the appropriate commenting styles for those blocks, then back at the end. It does that by adding a new string-valued state variable "htmlmode", which is updated according to which of those modes it's in. I'm a bit torn about that approach, but it seems the simplest for the moment.

It assumes script tags are JavaScript and doesn't try to address CDATA sections. It also currently does not take quoted-string attributes out as strings - it's not clear whether it should or not, but it would need to know how to tell it was inside <> first anyway. Arguably it makes sense to instead exclude everything that isn't inside <> like a string in this case, which might suggest it's not a suitable language to support (but it's useful for my purpose where there's little direct textual content anyway).

In any case, e05b78ff72dc91faaf5444431bd0753c8e1710ee should probably be merged as I think it's a straightforward bug fix - originally *.html was recognised as a C header file because of the presence of ".h" in the name, but the extensions should really be anchored to the end of the string.