Add TaskScheduler::JoinForTesting().

Before this CL, there was no way to unregister a TaskScheduler
registered by TaskScheduler::CreateAndSetSimpleTaskScheduler()
(TaskSchedulerImpl::JoinForTesting() must be called before deleting a
TaskSchedulerImpl, but can only be called when the suggested reclaim
time is TimeDelta::Max()). This is impractical when unit testing a
class that calls TaskScheduler::CreateAndSetSimpleTaskScheduler()
(came up in https://codereview.chromium.org/2610493002/).

This CL:
- Allows TaskSchedulerImpl::JoinForTesting() to be called on a
  TaskSchedulerImpl instance whose suggested reclaim time is not
  TimeDelta::Max().
- Adds TaskScheduler::JoinForTesting(), so that no cast is required
  to join the current TaskScheduler instance.
- Documents that TaskScheduler::JoinForTesting() must be called
  before destroying a TaskScheduler (so that callers don't have to
  look at task_scheduler_impl.h to learn that).

BUG=553459

Review-Url: https://codereview.chromium.org/2628313004
Cr-Commit-Position: refs/heads/master@{#445915}
diff --git a/base/threading/sequenced_worker_pool_unittest.cc b/base/threading/sequenced_worker_pool_unittest.cc
index 6e20339..5f9c9bfd 100644
--- a/base/threading/sequenced_worker_pool_unittest.cc
+++ b/base/threading/sequenced_worker_pool_unittest.cc
@@ -19,7 +19,6 @@
 #include "base/synchronization/lock.h"
 #include "base/task_scheduler/scheduler_worker_pool_params.h"
 #include "base/task_scheduler/task_scheduler.h"
-#include "base/task_scheduler/task_scheduler_impl.h"
 #include "base/test/sequenced_task_runner_test_template.h"
 #include "base/test/sequenced_worker_pool_owner.h"
 #include "base/test/task_runner_test_template.h"
@@ -296,8 +295,7 @@
   // Destroys and unregisters the registered TaskScheduler, if any.
   void DeleteTaskScheduler() {
     if (TaskScheduler::GetInstance()) {
-      static_cast<internal::TaskSchedulerImpl*>(TaskScheduler::GetInstance())
-          ->JoinForTesting();
+      TaskScheduler::GetInstance()->JoinForTesting();
       TaskScheduler::SetInstance(nullptr);
     }
   }