feat(route-loading): enable async view port component creation

Previously, the only part of loading that was asynchronous was done
through the route loader, which was expected to load the entire
component type. Now we make the getComponent call async as well,
allowing us to split instantiation into two parts. By doing this, we
can now support getViewStrategy for view model instances as well as
route configured views and view strategies. The details of that
implementation are in the templating-router library.