Use thread priorities. (aka set `nice` values for background-like tasks)

There are some items which seem to cause resource contesting when they are running. This is an attempt to allow the OS / JVM to help figure out which tasks should be run realtime, and which can be interrupted.

 * Defaults the thread priority to java.util.Thread.NORM_PRIORITY in io.druid.indexing.common.task.AbstractTask
 * Each exec service has its own Task Factory which is assigned a priority for spawned task. Therefore each priority class has a unique exec service
 * Added Task.Priority enum
   * Can be either NORMAL or LOW
 * Add options to ForkingTaskRunner
    * Add "-XX:+UseThreadPriorities" default option
    * Add "-XX:ThreadPriorityPolicy=42" default option
 * AbstractTask - Removed unneded @JsonIgnore on priority
 * Added priority to RealtimePlumber executors. All sub-executors (non query runners) get Thread.MIN_PRIORITY
The thread priority is not a fifo task priority, it is an OS concurrency scheduling priority. It maps directly to nice values in Linux systems.

The idea here is that when the query responder needs CPU resources, it gets them, but otherwise the plumber persisting can take up as much as it wants.

In the case where the queries are coming in so fast that it's hogging the CPU and preventing the persisting from completing in a timely manner, then I propose that ingestion *should* be throttled.