fix(comments): implement cloneAttachFn for changing DOM

The cloneAttachFn allows the DOM to be manipulated before compilation
ever occurs --- and also enables the compile function to occur only
one time per comments collection.

It has allowed the demo to use a much slower timeout, and really is
only necessary to trigger yet another digest to wait for the DOM to be
added.

BREAKING CHANGE:

Due to the slightly changed ordering of events during compilation,
it has become necessary to set the commentsRoot property of the
root comments controller to null, in order to avoid a circular
reference.

As such, applications which are reading this property from the
comments node should be careful to ensure that errors are avoided.