Refactored the ViewContainer to extract view loading and routing logic from the widget. Also made it possible for the client application to replace the root view container.