properly handle amperstands when HTML escaping

escapeExpression, when given a string like "&gt;", was simply returning
"&gt;", not escaping the amperstand. This is incorrect, and makes it
impossible to have Handlebars properly escape a
string like "Escaped, <b> looks like: &lt;b&gt;"

If the intention of the user is to not escape these characters, then
{{{}}} or {{&}} should be used
Don't assume execution in the top context
Several improvements to compiled output:

* Eliminate legacy support for an options hash
  that doubles as a function. This prevented us
  from building the hash as a literal, and added
  a bunch of code weight
* Create a new "stack literal" construct, that
  allows an opcode to push a literal expression
  onto the stack. This will not allocate a new
  stack variable, and when popped, will simply
  return the literal expression as a String.
Clean up the compiler a bit
Simple spec for isolation analysis
Start doing earlier work on helpers
Continue work on cleaning up helpers
Remove unneeded binary opcode stuff

It turns out that we don't need to store the
opcodes in a compact way, so don't bother.
Disambiguate more ahead of time
More cleanup

* Make block and inverse use the main helper path
* Eliminate separate inverse AST node
Remove unneeded code and add docs

There were a few operations that are no longer
needed, so remove them. Also document all
operations.
Fix a bug where registers were shared
Clean up parser tests and AST printer
Bump version to RC1
FIX global leak
Merge pull request #262 from naholyr/patch-1

FIX global leak
Add support for @data variables
Add support for @index in #each
Make deep @data trigger the data option
Reduce duplication