Rewrite JavaScript syntax highlighting

* Fixes bug that made division get marked up as regexp
* Highlights assignment to differentiate it from equality checks
* Adds a bunch of new highlighting categories (no color changes by default however)
* More syntax errors will be marked as bad (multi-line strings, multiple identifiers in a row, etc)
* Single and double quotes correctly treated the same
* Ident's can include $