Implemented basic shape drawing tools.
Added the AbstractBaseShapePainter class as a base class for all existing ShapePainter implementations.  Implemented a separation between the object (shape) space and the world space.
Implemented rudimentary shape selection (no UI feedback yet)
Selection works with drawing borders around rectangles, squares, ellipses, circles.
Implemented drawing of selected shapes with outline and resize handles.
Added painting of rotate handles.
Implemented dragging shapes to move them.
Got rotation working.
Implemented resizing, but there is a problem with the rectangles when rotated.
Fixed the issue with resizing rectangles.
Refactored transformations into a Transformatons utility class.
Fixed a little bug in the Triangle.doesContain() method.
Refactored Transformations to build the AffineTransform matrix manually.
Fixed alignment in Transformations
Checkpoint
Checkpoint 2
Checkpoint 3
Checkpoint 4
Scrolling and zooming (mostly) works.
Getting closer.