Correctly initialize schedulers on startup

This PR fixes a number of bugs around how we initialize RxUI. While our new type-detecting approach is *way* better than what we used to do (especially in places like VS Addins), some of the policy of how it *should* work was lost.

## A Few Things that Should Be True™

* The DeferredScheduler should be CurrentThread in a Unit Test Runner
* The DeferredScheduler should be CurrentThread if there is no platform DLL, and we should warn the user about it.
* The TaskPoolScheduler should always be TaskpoolScheduler. It seems like it should *also* be CurrentThread, but this often ends up with deadlocking unit tests in real-life scenarios.
* The Portable RxUI can't reliably detect unit tests or design mode, we have to leave that to the platform DLLs.