Merge branch `tags` into `master`.
Add `.js` suffix to test programs.

Proof now uses `.t.js` as its conventional file suffix because the Ruby
gem that GitHub uses to determine the programming language a
source file &mdash; Linguist &mdash; will always decide that a `.t` file
is a Perl test file.

The `.js` suffix generally meets the expectations of most tools. The
`.t` suffix looked nice in the reporting, but it wasn't so dear.

Maybe I can simply snip the suffix in the reporting?

Closes #56.
Merge branch `proof-js` into `master`.
Calculate base of relative file.

When a Stencil file is requested using only the file name without
directory, set the base directory to './'. The current regular expession
that strips the file name does not match a file path that consists soley
of a file name.
Simplified regex for serializer closed tag fixup.

Simplified the regular expression that matches content-less tags and
removes the forward slash.
Code tidy, comments, Require.JS tidy.

This is a tidy commit. Added some comments. Rewrote some snippy
comments. Indented some code that was supposed to be indented.

Trying a different incantation for module wrapper.
Spot check in of Stencil Redux.
Deleted Modeler.
Implement value.

Implement value with the new perpetual push interface.
Implemented attributes.

Implemented attributes using the in the Stencil redux.
Merge branch `attributes` into `redux`.
Rebuild instance structure from DOM comments.

We're now able to rebuild the instance structure for values and
attributes using data stored in comment nodes in the DOM. Currently, the
comment markers store only the id of the directive that inserted the DOM
nodes. A JSON tree is exported at the end of the document that includes
the count of nodes and characters inserted. Future commits will explore
storing the instance meta information in the comment markers directly.
Merge branch `reconstitute` into `redux`.
Fix template test fixtures.

The template test fixtures are out of sync with the updates made to the
placement of data comments to accommodate muddling of the DOM by Google
Chrome.
Implement require.

Reimplemented the require mechanism. Require assigns the exported module
to a context variable. If the module exports a function, require will
invoke that function with the context as a first argument and a callback
to accept the error or value as the second argument.

The `evaluate` function has been reimplemented so that it will also
invoke a function return value as a callback. Once again, we are
asynchronous.
Copy operations before iterating through them.

In the previous commit I was experimenting with cloning the directive
tree and consuming the tree while generating the initial document,
forgetting that I need the tree when I regenerate the document. I then
reverted to creating copies of lists of operations and child directives
before iterating through them by shifting the first one off the list. At
least that's what I intended, but I neglected to to revert to using a
copy of the list of operations.
Convert to string before recording value length.

Regeneration was off. When a value directive evaluated to an integer the
character count was off since an integer has no `length` property. Now
converting the value directives value to `String` before recording its
length in the instance map.
Use path as key to update marker.

I was incorrectly using the directive id as the key into the marker map
in the directive implementations instead of the path generated by the
descent of directive tree.
Element and character count in instance comment.

Added the element and character count to an instance comment. No more
JSON embedded in a comment. As it was, I was not updating the embedded
JSON object containing the instance information on regeneration, so
serialization would not freeze the latest state of the directive tree.
Merge branch `comment-instances` into `redux`.