Update undo/redo widget coding style

Widgets no longer use the nested callback approach to instantiation.
Restore focus back to the event trap after clicking the undo button

Partially fixes issue #426.
Expose the SessionController's undo/redo interfaces for the editor

Undo has additional logic to ensure the event trap is restored after
an undo is performed. At some point, this will need to split out of
the SessionController, but for now it is simplest to expose this to
the EditorSession for use.

Fixes remaining problems causing issue #426.
Subscribe to canvas events rather than sizer element in EventManager

The sizer element is replaced when an undo is performed, causing no
mouse move events to be reported after an undo. This breaks the shadow
cursor display.

There is no particular reason 67c1c23 changed the event binding to use
the sizer rather than the canvas element other than for consistency
with where the event trap was being added, so it is safe to revert
this particular modification.
Restore proper shadow cursor operation on FF

Firefox throws an exception if the SVG shape is rendered while the
polygon node is disconnected from the document (e.g., after an undo).
Merge pull request #427 from peitschie/undo-fix

Fix edit breakage after performing an undo