Syntax highlighter cleanup

This cleans up the syntax highlighter markup and styles.

Rather than using the syntax highlighter's built in configuration mechanism that abuses the class attribute, use distinct attributes and proper classes to configure it in the markup.  Then read that information in javascript and feed it to the syntax highlighter.  The new markup matches up with the recommendations in the HTML5 spec.  It also allows the API to provide syntax highlighting configuration, which is the first half of implementing #605.

Also, stop trying to apply custom styles to the syntax highlighter for the border and background, etc.  Instead, reset the syntax highlighter itself to inherit from parent attributes, and wrap it in a pre tag to get the borders, background, fonts, etc.
Would you mind using a different variable name in the map?
It can be hard to tell the difference between the lowercase L and the 1...
and with the template syntax for array subscripting...
when I first saw this line I thought it said `1.0+1.1` and wondered why...