Patch rx_desc memory layout
WIP: Eraser implementation
In the algorithms that implement strokes erasing, I create a new im::Vector each time, so it's a little bit expensive, it should be fixed.
Also, we must take care of the matter of finding a way to determine (cheaply) whether two Canvas versions are actually different or not: For now I'm using a version_id that gets incremented each time an actual edit (i.e. moving the eraser without touching any stroke is not an actual edit) is performed.
WIP: Eraser implementation
When does the current path being drawn make sense?
I felt a little uncomfortable keeping this in CanvasData, because there is no current path being drawn when we erase. Probably with the state machine we can achieve a cleaner vision, though.