Use `findEnd` in tag logic.

Removed logic in the tag logic that duplicates `findEnd`.
Replace switch with if/else test of text node.

As noted in previous commit messages, in the directive comments, if it
is not a text node, it is counted as a node.
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.
Swap items set.

To reduce the surprise of the side effect of `comments` adding the item
id to the item id set of the prototype I now assign the `items` property
of the prototype to the `items` local variable for use as a difference
set, then create a new empty set in the `items` property or the
prototype where the new set of items is built. When `comments` adds an
id to the item set of the prototype it now merely does what the `each`
directive handler has already done.

Closes #73.
Merge branch `tag` into `travis-ci`.

Conflicts:
	redux.js