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.
Rearchitect how class={{xyz}} is handled in templates,
and also how class is handled when specified for programmatic creation
like new MyWidget({className: "foo"}).

On the first refreshRendering(), it will add this.xyz to the specified
node's class list, rather than overwriting its class list completely.
Further, if the user changes the value of xyz from "foo" to "bar",
it will do a removeClass("foo") and addClass("bar"), rather than just
setting the class attribute directly.

Solves the problem with baseClass and d-rtl getting overwritten,
and also the problem with user defined classes getting overwritten.

Adds setClassComponent() method to Widget to set part of a class string
without interfering with the other parts.

Also moves setting baseClass and d-rtl classes from Widget#attachedCallback()
to Widget#refreshRendering().

Fixes #263 etc.

PS: If we later decide that this behavior is too magical, we can enable it through a different
attribute name, for example:  append-class={{xyz}}.
Avoid common CSS classes to be included in all widget CSS file (Fixes #264).
Remove DnD CSS files (Fixes #245).
focus.js: avoid spurious exception and remove some unused code.
fix popup.js issues, including fact that widgets no longer have methods like onChange
Rewrite HasDropDown code to use promises, and also to eliminate race conditions
between mouseup/keyup vs. when the popup completes loading.

This preserves the mousedown --> slide over menu --> mouseup code path for
quickly selecting a choice in a drop down menu, although it's debatable whether
or not we want to keep that code in the final release.
convert HasDropDown test to functional test and expand test
Fix misbehavior when using delite/popup with delite/focus for widgets with no id.
Fixes #267.
fix jshint
Container: support appendChild() and insertBefore().
Calls onAddChild() in both cases.
Doesn't call onAddChild() for the original children.

Fixes #168.
handlebars: avoid spurious timing-related test failures
jsdoc: import decor's doc into delite's doc, such that links to superclasses from decor work
CssState: avoid spurious timing-related test failure
If scrollbar needed, make popup widget display it instead of popup wrapper.
Partially reverts 4d1ddb9738c5a9af31092562211d8f0d4bec202c.
Fixes #266.
popup: various test cleanup / modernization, plus bug fix
popup: stop calling evt.preventDefault() on touchend.
It's not needed and actually prevents closing popups (on iOS 7).
Fixes #269.
adapt code, test and doc to latest dstore
feedback from Bill + makes clear some methods are protected