added new protocol so we can get scratch blocks working.
added better support for custom widgets.
removing dead code.
using zippers for lots of things. scratchblock is now a defwidget. bug fixes.