Let base::Thread::Options pass in an unbound MessageLoopBase

This allows us to construct a SequenceManager and vend task queues
before launching a thread.  This should be useful in blink for
launching workers (which currently have a worker scheduler on top of a
MessageLoop), if we need an IO Thread scheduler (it looks like we might
the IO thread is congested during startup) and for the BrowserThreadTest
with a BrowserUIThreadScheduler.

The message_pump_factory_ was added to base::Thread to support these
two use cases:
https://cs.chromium.org/search/?q=message_pump_factory&type=cs

Bug: 863341, 872372
Change-Id: Ic30052e8af4a9351467792e70b7d7b65027d8a9a
Reviewed-on: https://chromium-review.googlesource.com/c/1462801
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Auto-Submit: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632741}
10 files changed