Add TaskPriority as a parameter to SequencedWorkerPool in preparation for TaskScheduler experiment.

(ref. http://crbug.com/622400 for experiment details)

The mapping should be as follows:
 - TaskPriority::USER_BLOCKING : the pool runs tasks that are on the blocking path to responding to
                                 a user action.
 - TaskPriority::USER_VISIBLE : the pool runs tasks that must not block (i.e. have visible outcomes)
                                but can be re-ordered behind USER_BLOCKING work.
 - TaskPriority::BACKGROUND : the pool runs non-critical background tasks that should not interfere
                              with foreground work.

Since each pool can only be assigned a single priority (until we do the full migration and each
TaskRunner extracted from it can have its own priority), the highest priority among all tasks
running in that pool should be picked if the pool runs multiple types of tasks.

Note: for usage in unittests I picked USER_VISIBLE since tests shouldn't run at background OS priority
      but it's okay if USER_BLOCKING work gets re-ordered ahead of the test's tasks. A TestTaskScheduler
      will likely soon replace those use cases.

BUG=553459, 622400

Review-Url: https://codereview.chromium.org/2077413009
Cr-Commit-Position: refs/heads/master@{#406481}
19 files changed