Run `comments` against `DocumentFragment`.

Instead of running the `comments` function against a directive body
after it has been inserted into the generated document, `comments` is
run against the document fragment returned by `scavenge`.

This creates a special case for the `each` directive. The prototype
marker maintains a set of item ids, indicating which items are present
in the document. The `each` directive handler deletes an id from this
set of item ids if the item is present when regenerating the `each`
directive. Now that we run `comments` against the fragment as it will be
inserted into the document, the `comments` function will see directive
comment for the specific item and add the id to the prototype item set,
when we'd just deleted it from the same set to indicate that it has
been seen in the new array.

I now delete from the item set after I've possibly added the id to the
item set by reconstituting a fragment using the `comments` function.