templates: fix code generation for expressions for observe() callback.
fixes #258
Avoid spurious fetch of illegal URL during template parsing.

Happens from template code like <img src={{foo}}>, which causes a GET of "{{foo}}",
at least on Chrome.

Fixes #260.
Refactor template.js into a class.

Note that this renames template.js to Template.js, which may cause some confusion
on case insensitive filesystems.
Defer setting non-boilerplate template node values until widget properties are available.

For example, for a template like <button type=button class={{myClass}}>{{myLabel}}</button>,
"type" will be set in buildRendering() but "class" and the the label won't be set until refreshRendering().
This is regardless of whether or not the app overrides the default values for myClass and myLabel.

Avoids errors referencing nested properties (ex: item.foo.bar) when item.foo isn't defined
yet when buildRendering() runs.

Will probably require some updates to deliteful test files (and possibly code) which assumes
that the default values are filled in by the time buildRendering() completes.

Fixes ibm-js/deliteful#249.