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.
Could you comment on what some of these mean and where they come from?
By default `line-numbers` is only set on the `/source` page, right?
What do 'data-start' and 'first-line' do?
Since the code isn't incredibly obvious for someone without intimate (or recent) knowledge of the overall syntax-highlighting thing, some comments would help readability a lot.