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.
It is a tradeoff between number of methods vs more explicit names. There is a general question about how should this API look like, but I would punt to the point where we are clear on what is internal vs external API.