Add a cell filter for direct-only scheduling

Any cell name listed in FLAGS.cells.scheduler_direct_only_cells is
filtered out before the weights-based scheduling step, so it can never
be scheduled to without naming it explicitly in the 'cell' scheduler
hint.

Also fixes a bug in role restriction where supplying a scheduler hint
would override the filters that dropped cells. The scheduler now checks
to make sure the hinted cell is still in the list of available cells.

Note: the order of filters is important. The role restrict filter
must come first, followed by the pick cell filter, then the direct only
filter.