feat(viewPort): adds initial implementation of ViewPort.

ViewPort is the mechanism backing @Template directives. Those
directives can use the viewport to dynamically create, attach and
detach views.
you should probably a few error cases (e.g. `viewPort.remove(99)` and `viewPort.insert(view, 99)`)