[Open Screen] Allow PlatformClientPosix to take a TaskRunner.

This updates the API to allow clients to pass a TaskRunner, so they
don't have to subclass PCP.

It also streamlines the documentation, fixes IWYU, and reorders
definitions to match declaration order.

Finally it also declares TaskRunner::IsRunningOnTaskRunner as pure
virtual so it is mandatory to implement.

Bug: openscreen:108
Change-Id: I646f416d7d337f32c96186236a84a9b9440f1eeb
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2043953
Commit-Queue: mark a. foltz <mfoltz@chromium.org>
Reviewed-by: Ryan Keane <rwkeane@google.com>
Reviewed-by: Jordan Bayles <jophba@chromium.org>
diff --git a/platform/api/task_runner.h b/platform/api/task_runner.h
index 6297c21..e114db6 100644
--- a/platform/api/task_runner.h
+++ b/platform/api/task_runner.h
@@ -50,7 +50,7 @@
 
   // Return true if the calling thread is the thread that task runner is using
   // to run tasks, false otherwise.
-  virtual bool IsRunningOnTaskRunner() { return true; }
+  virtual bool IsRunningOnTaskRunner() = 0;
 };
 
 }  // namespace openscreen