Every shape gets a GUID
LinePath and ErasedLinePath store data much more efficiently
saveShape() can save shapes below other shapes, and avoid triggering the event
shapeSave event includes afterShapeId
afterShapeId -> previousShapeId
Eraser doesn't crash
Merge pull request #159 from irskep/shape-ids

Shapes have unique IDs; [Erased]LinePath stores data more efficiently