This patch fixes a subtle bug that arose from re-using instances and was made worse by synchronous instance production.

An instance's terminator is the clone of the last child of its content document fragment. An instance's last node is the final, top-level node which is included in the instance. These can differ if the terminator is a template and that template has produced (sub)instances.

Before re-using instances and synchronously production, the these were the same at the time the terminator was collected.

This patch separates these two roles and in the process cleans up a bunch of code. In particular, the "hosting" document fragment which was produced as a result of createInstance() now contains "private" members which point to the terminator and the bindings array. When the instance is inserted, the children are removed and put into the document, but the document fragment (along with it's private state) are kept in the iterators "instances" array.

Note that if/when we implement mutation tolerance, more assumptions would be invalidated here (in particular, the terminator would not be assumed to be static).

Note also that the test now cleans up by clearing all templates rather than closing all bindings. This is how I discovered this bug (while working on removing unbind. That's why there are no new tests, because clearing the templates uncovered the bug (which manifested as incorrect terminators)

Close review is requested.

R=arv
BUG=

Review URL: https://codereview.appspot.com/76510043