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.
Is it possible to have other classes on source at this point?
The code says "if any of the classes start with language, skip, otherwise overwrite all the classes".
Should that be addClass instead?

Additionally, while this does work, we could probably simplify the logic by replacing the whole loop with
`/(^|\s)language-/.test(source.className)`