Add generic shape adder and deprecate old adders

Add the addShape() function in order to delegate instructions to
internal functions so that future shape additions will be easier.
Have addCircle() and addRectangle() adapt their data objects to work
with addShape() and display deprecation warnings to encourage the
client to switch to addShape().
Rename ShapeData checker and document

Rename correctShapeData to the less ambiguous "normalizeShapeData"
and document its operations on the passed ShapeData object
reference.
Merge branch 'generic-shape-adder'