Unit test for crumb data
Unit test for current state data
Unit test for default data
Unit test for message persistence
Moved defaults to same state used in data test
Return CanvasData so X, Y, W and H can be tested
Unit test for canvas width
Unit test for canvas height
Unit tests for X and Y
Unit test for Y for off canvas dialog

The canvas Y should be adjusted so the current dialog is visible,
including all its transitions (if possible)
Unit test for Y for trans off canvas dialog

If the dialog and all its transitions don't fit on canvas then the top
of the dialog should be the top of the canvas
Unit test for X for state off canvas

The canvas X should be adjusted so the current state is visible
Allow for very wide state

In the same way as done for Y, don't go to the far right edge of the
current state if that takes the left edge off canvas