Refactoring the UI interface to add flexibility

This commit introduces three (abstract) classes: WebUI, UITab, and UIPage.
The top of the hierarchy is the WebUI, which contains many tabs and pages.
Each tab in turn contains many pages.

When a UITab is attached to a WebUI, the WebUI creates a handler for each
of the tab's pages. Similarly, when a UIPage is attached to a WebUI, its
handler is created. The server in WebUI is then ready to be bound to a host
and a port.

This commit also breaks down a couple of unnecessarily large files by
moving certain classes to their own files.
Merge github.com:apache/spark into ui-refactor
Comments, imports and formatting (minor)
Generalize SparkUI header to display tabs dynamically
Allow adding tabs to SparkUI dynamically + add example

An example of how this is done is in org.apache.spark.ui.FooTab. Run
it through bin/spark-class to see what it looks like (which should
more or less match your expectations...).
Merge branch 'streaming-web-ui' of github.com:tdas/spark into ui-refactor
End of file new lines, indentation, and imports (minor)
Remove outdated comment
Merge pull request #2 from andrewor14/ui-refactor

Refactor UI interface to allow dynamically adding tabs