Simplifies CentralPlannerScheduler.set_status

This removes some lines that were special-cased for trying to set status for
a DISABLED task, but simply duplicate functionality from later in the method.
Adds bucketed task management to the scheduler

This allows us to put tasks into buckets. The scheduler will only run one task
from each bucket at a time, and it will choose the task with the highest
priority bucket. When a task in a bucket is marked DONE, so is every other task
in the bucket with lower priority.

This is useful for tasks that supersede each other. For example, if we have a
daily task that copies all data from a production db to hdfs every hour, we
don't need to run it 8 times if it breaks overnight and we fix it in the
morning. We only want the most recent one to run, at which point all earlier
ones are also complete because all data from the db is already copied over. This
is also useful for tasks that regularly copy fresh models and such to
production.