Add Button and Widget classes

Toneblaster shall include an immutable object system. That is,
all objects will be frozen at the end of their constructors. State,
in this way, is forced to live either in the application model (the
interface object) on one side, which subsumes the DOM and Kinetic
objects, and the data model, which subsumes the composition object
and the link the database.
Move panel.js functionality into objects