System Monitoring

Resolves issue #474 

## Overview

Gives committers of Codalab access to valuable health metrics about the system and which participants/competitions may be having problems. This will be done via some endpoint like:
http://codalab.org/health/

Emails will be sent when certain thresholds have been broken.

## Functional Review

1. Get set as an admin on `codalabtest.cloudapp.net`
2. Go to http://codalabtest.cloudapp.net/health/status
3. Verify the values for jobs pending, avg job length, most recent failed job, jobs lasting > 10 min
4. Verify settings tab allows you to update emails (will let you put in bad data)

## Tasks
- [x] System monitoring page admin only
- Template
    - [x] Job in queue count
    - [x] List recent failed jobs
    - [x] List jobs taking > 10 min
    - [x] Average job length
    - [x] Form to edit alert email list

What it looks like when things are good:
![image](https://cloud.githubusercontent.com/assets/2185159/3899421/8b119a2c-227b-11e4-8d96-d8f0e998bac8.png)

When things might be getting hairy:
![image](https://cloud.githubusercontent.com/assets/2185159/3899436/c88c926c-227b-11e4-85f6-43a29e880cdc.png)



- Page context:
    - [x] How many jobs are in queue?
    - [x] How long are the jobs taking on average?
    - [x] Are there any jobs taking longer than 10 min?
    - [x] List failed jobs
    - [x] List 5 longest jobs from last 48hrs
- Sends emails for following thresholds:
    - [x] Jobs in queue > 100
    - [x] Jobs taking longer than 10 min on average
- [x] Thresholds checked every minute via endpoint


## Tests
- [x] System monitoring page returns 404 for non admin
- [x] System monitoring page returns 302 for non logged in user
- [x] System monitoring page returns 200 for admin
- [x] System monitoring page context contains jobs pending
- [x] System monitoring page context contains jobs pending count
- [x] System monitoring page context contains average job time
- [x] System monitoring page context contains jobs lasting longer than 10 minutes
- [x] System monitoring page context contains list of failed jobs
- [x] System monitoring page context contains list of longest recent jobs from 48hrs
- [x] System monitoring page context contains alert_emails data as list
- [x] System monitoring threshold checker triggers for jobs in queue > 100
- [x] System monitoring threshold checker triggers on jobs taking > 10 min to process
- [x] System monitoring threshold checker sends to settings with comma separated emails
- [x] System monitoring email settings view returns 404 for non admin
- [x] System monitoring email settings view returns 302 for non logged in user
- [x] System monitoring email settings view returns 200 for admin
- [x] System monitoring email settings view updates email settings variable

## Open issues

F# worker is blocking the potential to track execution time limit failures.