Fix backwards unravel.

In an attempt to be clever with respect to the number variables used in
the unravel logic, I ran though the directive children backwards thereby
throwing off the count of characters by counting the leading characters
in the directive body instead of the trailing characters.
Use `path` given to `rewrite`.

Rewrite will now use the path given as a parameter as the base of paths
generated by the descent, instead of always starting with an empty path.
Remove `depth`.

The `depth` property appears to be unnecessary.

Closes #68.
Merge branch `each` into `redux`.
Make `comments` accept array `path`.

The `comments` function used the path as a means to communicate the
range of a directive body. The path was specified as an array of plain
objects, the top most object in the path containing the elements and
characters of the directive body. This made it difficult to reuse the
`comments` function in other parts of the code that only had an array of
strings.

Now the caller receives the range of a directive by passing in a plain
object as the first parameter. It is populated by `comments` function
when the given node is a directive marker comment. This outbound
function parameter is only ever used by the `comments` function itself
to implement an order traversal of the DOM. Other callers will pass in
an anonymous plain object, ignoring the result.
Remove `scrap` variable from `if` directive.

At some point, I thought that the scrap document would be created if
needed in the `rewrite` function however, now there is always a scrap
document form which to scavenge directive bodies.
Build `context` using `extend`.

I now create a new context for each directive by extending the context
of the parent directive when rewriting the document. This replaces two
loops that would walk back up the rewrite tree building a list of
contexts, then iterate the list to build a merged context.
Add test for overlapped directive comments.

I'd removed a test for overlapped directive from the `comments` function
and have now reintroduced it.
Delete defunction `instantiate` function.
Implement `each`.

Implemented `each`. Not certain how to handle an update that would
reorder the elements. I will probably go through the array checking to
see if the element exists in the current document. If it exists, then I
need to test if it is linked into the document at the correct location,
relinking it if it is not in the correct location.

The `reconstitute` function is choking on the document.

The `scavenge` function needs to be updated to strip out any each object
ids from the path. Once an `if` or `each` direction is nested in an
`each`, the path to the instance in the generated page will be different
from the path to the directive prototype in the scrap page.

See #60.
Merge branch `each` into `redux`.
Merge branch `redux` into `master`.