Make the default UI scheduler handle early init time

Depending on the platform, the UI thread scheduler could be initialized fairly
late in process startup. This makes trying to do things like set up service
location difficult, since the static RxApp ctor kicks in and then immediately
blows up trying to find Dispatcher.Current.

Instead, keep trying to switch to the UI scheduler and if it fails, use
CurrentThread