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.