templates and handlebars: enhancements and refactoring

1. True/false values for replacement variables converted to "true"/"false" strings, ex: aria-selected="false",
   d-hidden="false".  Correspondingly, CSS rules for d-hidden etc. simplified.
2. If a replacement variable is undefined, remove the corresponding attribute, for example
   aria-valuenow={{foo}} where foo is undefined.  This is necessary to support aria, where aria-valuenow=""
   is different than having no aria-valuenow attribute at all.
3. Updated documentation.
4. Now handlebars.js generates JS code for a text value, like "Hello" + this.name, rather than template.js.
   Preparatory work for #31 or for supporting abritrary javascript in templates.  Also means that we will
   create a single text node rather than multiple text nodes.
5. Template.js changes to make it more explicit about when to create/not create node, and what that node should
   be called.
handlebars: support for binding expressions like {{this.a + this.b}}