Greatly improved editable history and code readability.

ReEditableLayers are now capable of being added and removed from the
drawing loop. This is needed because multiple REL's are created when
history items are created, and we do not want duplicate shape drawings
and such. This involved some modifications to ShapesHistoryItem,
ShapesModifyHistoryItem, and ShapeEngine classes as well. REL's also now
have fewer duplicates, due to shared REL instances among cloned
ShapeEngine instances.

addShape and createShape (EditEngine methods) have been combined into
one.

A lot of code in primarily BaseEditEngine has been rearranged, added,
removed, and/or renamed. This was done to improve code readability,
efficiency, and consistency.

Colors have been stored and responded to differently so as to
individualize shapes with their corresponding colors.

Instead of having an abstract PartialClone method in ShapeEngine
classes, it has been made non-abstract, non-overridden, and split into
having a second abstract method called cloneSpecific, which child
classes now override to add their unique clone data.

HandleBeforeUndo/Redo methods have been added to ShapeTool using the
already existing TryHandleUndo/Redo methods.