[SPARK-4145] Web UI job pages

This PR adds two new pages to the Spark Web UI:

- A jobs overview page, which shows details on running / completed / failed jobs.
- A job details page, which displays information on an individual job's stages.

The jobs overview page is now the default UI homepage; the old homepage is still accessible at /stages.

In some situations, the jobs page may display "No information on stage" for some stages of pending jobs that have not begun executing.  This is due to some limitations in how JobProgressListener finds out about stages.  We can address this later as part of a separate scheduler PR.

### Screenshots

#### New UI homepage

![image](https://cloud.githubusercontent.com/assets/50748/4989750/801ff1ce-6932-11e4-8d1a-1d2a3c527227.png)


#### Job details page

(This is effectively a per-job version of the stages page that can be extended later with other things, such as DAG visualizations)

![image](https://cloud.githubusercontent.com/assets/50748/4837239/79ee6b1e-5fd2-11e4-839d-6cbb42fb01c0.png)

I'm not sure how Job Group is being used in all cases now, or whether it even works particularly well at all, but the concept of a Job Group could be useful when the "job" from the user's point of view is actually composed of multiple Spark jobs.  That can be the case when you want to do something like sorting an RDD without falling into the nastiness of embedded, eager RDD actions to generate a RangePartitioner.  Instead, you'd queue up multiple jobs in a Job Group with later jobs depending on the results of earlier jobs in the group.  If the user decides that the "job" should be killed, then all of the jobs in the Job Group should be canceled.