Abstracts out startup window, added StartupWindowProvider doing runtime discovery and choosing the right window to use