Abstracted most of the code out of ShapeTool.

The LineCurveTool is still functioning as before. However, none of the
other ShapeTool child classes are intended to function properly yet. The
EditEngine and each of these classes will need to be modified so that
the EditEngine will incorporate selection functionality rather than
drawing functionality and these other tools will appropriately draw or
select their intended shape.