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().