Hack to try and fix the anti-aliasing issue

DrawingBoard.Board.fill tries to fill an area with the selected stroke color. The problem
is that drawn lines are anti-aliased, causing the lines not to be of a unique, plain color.
When "fill" iterates on the pixels composing the area to fill, it will stop when finding
a pixel of a different color; but this pixel is part of the anti-aliasing gradient, not
the actual line.

This anti-aliasing cannot be disabled.

One possible way of solving the problem would be to draw line at pixel level, using putImageData
but it would be a real performance killer.

The hack proposed here is, instead of stopping iterating pixels to early and leaving part
of the antialiasing gradient, to make one more step at the end.

This causes the filled area to be at most 1 pixel too big, but solves the original problem
most of the time. Note that this hack WILL erase the border of the filled area if that
border is only a 1-pixel-wide line.
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.
Merge branch 'fix-issue-29-background-undo'