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.
How about a comment to say that this block is where we turn the line numbers into links?