Add option to treat zero as a falsy value

In javascript implementation, zero is a falsy value and is treated as a false boolean.
An option is added (false by default) to treat zero as a falsy value as in javascript implementation.

It means that section like:

{{#zeroValue}}foo{{/zeroValue}}

will not be rendered.
Some tidying, added a negative test, method tests.

The latter was because the new feature was not actually conditional on its
compiler parameter. It was on all the time.