Support self-closing elements
Merge pull request #53 from mixonic/self-closing

Support self-closing elements
Frames now track the parent node
Clean up the Morph packaging
Merge pull request #54 from mixonic/cleanup-morph

Clean up the Morph packaging
Refactor DOMHelper, introduce contextualElement

Template execution now requires both hooks and the dom to be passed in.
For example:

    template(context, {hooks: hooks, dom: new DOMHelper()});

Optionally, you can provide a contextualElement to the DOMHelper. This
will allow it to resolve un-escaped HTML rendering issues:

    var template = compile('{{{html}}}');
    var tableElement = document.createElement('table');
    template({html: '<tr><td>Yo</td></tr>', {
      hooks: hooks,
      dom: new DOMHelper(tableElement)
    });

When block or component hooks are called in hydration, they are passed a
DOMHelper instance with the current contextual element. This allows
templates like:

    var template = compile('<table>{{#test}}{{{html}}}{{/if}}');
    template({html: '<tr><td>Yo</td></tr>', {
      hooks: hooks,
      dom: new DOMHelper(null, document)
    });

To run properly. The `test` helper just needs to pass the env (which
contains the proper contextual element) through to the inner render.

This code also prepares htmlbars for changing namespaces based on the
AST.
Move DOMHelper into the morph package
Merge pull request #52 from mixonic/tr-nested

Refactor DOMHelper, introduce contextualElement
Refactor opcode rewrites to be expressive of their intent

Opcode rewrites should probably not be occurring, but if they are then
they should do exactly what they purport to do. These changes prepare
the codebase for the introduction of new opcodes that may change the
index-based positions of opcodes that these rewrites expect.