Use `ViewComposer` to drive view building

This is a design decision that allows composed parts of a view (e.g.
partials, containers) to be accessible from backend code.

The view remains precomposed for cases where the underlying components
of the view are not modified. This retains the performant aspect of
view building in that work is done up-front or at the last possible
moment.
Add `Container` object

Makes it possible to treat a container as a View. Examples:

presenter.view = page.container(:default)
page.container(:default).to_view.remove
Add `Container#remove`