Add hook for app initialization on main thread 
## 🚀 Feature Requests

Add a hook that allows customization of the app initialization in the context of the main thread, i.e. similar to `MvxApplication.Initialize()` but on the main thread, not the background thread.

### Contextualize the feature
With a recent Xamarin.iOS update, constructor calls to UiKit classes are checked for access from the UI thread. Construction fails if construction is attempted on the background thread. [([generator] Add missing `EnsureUIThread` for generated `init`)](https://github.com/xamarin/xamarin-macios/commit/ac01b522f002e3106f6c1c3b57c34e830c1061ea)

This broke app initialization in a project, because one instance is derived from UiView. In that project, the UI class is lazily registered in `Setup.InitializeFirstChance()` but a non-lazy registration within `MvxApplication.Initialize()` triggers object creation within that method, which runs on the background thread. Eager registration of the UI class in `Setup.InitializeFirstChance()`  is not feasible due to a dependency to a cross-platform interface.

The smoothest fix for this breaking change imposed by Xamarin/iOS would be to be able to have a hook similar to `MvxApplication.Initialize()` that runs on the UI thread.

### Describe the feature
Add virtual method `MvxApplication.InitializeOnMainThread()` and call it from the main thread instead of a background thread to allow clients who override this method to perform initialization on the main thread.

### Platforms affected (mark all that apply)
- [x] :iphone: iOS
- [x] :robot: Android
- [x] :checkered_flag: WPF
- [x] :earth_americas: UWP
- [x] :apple: MacOS
- [x] :tv: tvOS
- [x] :monkey: Xamarin.Forms
- [x] :🌍: Blazor
