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.
What is the purpose of this?  To update the hash in the browser bar without scrolling the page?
In my experience this is where I've found comments to be most valuable... the **what** it's doing _seems_ fairly obvious, but the **why** is not immediately obvious.