Integration of simple-undo to handle undo/redo history, and fix for issue #29

Issue #29 : "When a background image is set and you undo the very first thing
you've done the entire background image is removed and you're left with
a transparent background."

The previous implementation of the undo/redo history was a bit messy about the
initial state. This was causing some strange behaviors like in issue #29, or
when reseting the board, or when the maximum size of history (30) was
reached.

Specifically, issue #29 was also caused by a sequential call to setImg and to
getImg in DrawingBoard.Board.resetBackground. setImg sets the new image
asynchronously while getImg gets the current state. This commit modifies
setImg to accept a callback as a second parameter, called only when the
image is actually set.