Revamp Properties panel implementation
Added EditCommand, broke out panel management into its own class.
The input enhancements now dispatch `change` events when a drag is
finished, in line with what I think is normal-ish browser behavior.
At least for text/text-adjacent inputs, change events are normally
sent when the user finishes editing and "commits" the change.
The property panel now does interactive updates on `input` events, and
commits them to history on `change` events.