Adjust directive comments for substitutions.

When an `if` or `each` directive contains a `value` directive as a
child, when the child is expanded there is a potential for the character
count of the parent directive's directive comment to change. Now I take
note of the current node that is the next sibling of the last element in
the directive body prior to rewriting the directive, then when the
directive is rewritten, I recount the nodes and characters.

I created the `insertBefore` and `removeChild` functions to patch
behavioral issues with the server side XML DOM library. This will remain
in place until the library is fixed.

I've created a `remark` which replaces a directive comment with a new
element and character count.

The element count now includes all nodes that are not character nodes so
that we know to include comment nodes, since comment nodes indicate
directive bodies. It was the case that a directive that did not yet have
a body -- specifically a `value` directive with no value -- would not be
counted in a parent directive body. It would contain only a comment, no
characters and no elements.

The new element count means that all the switch statements used to
determine the node type have been replaced by if/else statements. If it
is text, count characters, otherwise count "elements".

Renamed `visit` to `unvravel`.

See #51.