Make it possible to use sentry for notifications

Sentry is one of many exception / event ledger services, the original
chronos supports only email notification.

This commit makes it possible to send notifications to sentry as well as
laying some of the groundwork for making notifications pluggable.
Make notifications easier to group
Fixed sufficient resource check.
Fixed regression in reservations.

When we assign roles for reserved task resources, we must use roles that
were actually offered those resources.

This was introduced by 9bc10a334.

Conflicts:
	src/main/scala/com/airbnb/scheduler/mesos/MesosTaskBuilder.scala
Fixed resource typo.
Merge pull request #180 from GregBowyer/master

Make it possible to use sentry for notifications
Include mesos failure messages in notifications.
Use default resource values for jobs.

Conflicts:
	src/main/scala/com/airbnb/scheduler/mesos/MesosJobFramework.scala
Fixed unit test breakage.
Fix for task accounting.
[IVAPP-1189]: Add priority level to jobs
Move priority level to boolean "highPriority"
Clarify priority names and comments
Handle invalid dependent job (missing parent(s)) on load
BUGFIX: Sync updated dependent jobs to zookeeper

Scheduled jobs, when updated, are immediately synced to the
PersistenceStore (usually zookeeper). But dependent jobs were
only updated in memory. This leads to the nasty failure on restart
in the following sequence of events:

  1. create dependent job with parent A
  2. update dependent job with a new parent B
  3. delete old parent A
  4. restart chronos
  5. experience gnashing of teeth and weeping when chronos fails
     to start properly, because it cannot load the dependent job
     (which still requires parent A)

My previous commit
"Handle invalid dependent job (missing parent(s)) on load" prevents
chronos from simply choking on step 5.

This commit fixes the root issue.
Updated README.
Added default epsilon to scallop args.
Added bin/chronos-sync.rb.
Added some validation for jobs.
Minor fix for schedule regex.