Swap mouse state w/ hash instead of 2 struct slots.
Button dragging.
Support editing of button actions.
Block handlers while waiting for user input.
Implement button resizing.

Fixes #2.