feat(snapToGrid): implement a selection system that snaps to the grid lines

Add a basic selection system which drops a selection handle at grid intersections or in free space.

Closes #8