Reland: Pass task runners to AudioManager constructor.

This patch replaces the internal AudioManagerBase::audio_thread with
an external task runner. The old implementation made it harder to test
and override the internal audio thread.

AudioManagerBase::Shutdown had to complete on the audio thread before
the AudioManager instance could be deleted. It relied on Thread::Stop
on the main thread to wait for the audio thread to shutdown. A subclass
using a different thread shared with other modules could not do that.

Passing a task runner into AudioManager and making GetTaskRunner
non-virtual ensures that the task runner will not change for the
lifetime of AudioManager instance.

BUG=594234
TBR=rkc,tommi,xhwang,jam,dalecurtis

Review URL: https://codereview.chromium.org/1894373002

Cr-Commit-Position: refs/heads/master@{#388211}
diff --git a/components/audio_modem/BUILD.gn b/components/audio_modem/BUILD.gn
index d14a7b3..83cd882 100644
--- a/components/audio_modem/BUILD.gn
+++ b/components/audio_modem/BUILD.gn
@@ -63,6 +63,7 @@
   deps = [
     ":test_support",
     "//base",
+    "//base/test:test_support",
     "//content/test:test_support",
     "//media",
     "//media:shared_memory_support",