Cleaning I guess

Just to separate this stuff from the undo commit
Add undo/redo support

Basically this feature uses a list of image objects that are
updated every time the user lifts up on her mouse. It supports up
to 50 saved states (configurable). It supports iterative reversion
(e.g. undo three times, redo three times). Resets the iteration
position every time a new state is written by drawing a mark.

Closes #9.