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