Coords: Move a useful definition to the header.
ItemData,Grid: Properly refresh the model item when snapped, not only the view item.

Create a changed cycle, as otherwise the model items would have to know about the view.
The cycle begins when the user modifies a widget (i.e. moves, rotates, ..)
a action specifc callback handler gets excuted which modifies the model item.
That model item - if actually changed (i.e. moved .25 grid units the item will
snap back into the very same position) the "changed" signal is emitted.
The sheet/view updates itself and snaps the item to a grid corner.
If a snap occured this will be treated as a (minor) movement and the cycle starts over,
until no more snapping is required. This is usually the second iteration.