Don't mask Error instances by wrapping them in AssertFailedException instances; this lets us see stack traces!
Added a test for using JS expressions in {% if %} nodes.
Reworked the {% if %} node to work with JavaScript expressions.

Also, added parseExpr() for parsing JS expressions into a Function that takes a Context object.
Made AssertFailedException inherit from Error correctly, added support for printing stack traces from AssertFailedException instances, and added support for printing stack traces from other Errors even if error.type doesn't exist.