Fix: dragging on the viewPort was broken: it would move the viewBox but would turn the viewPort's image to black.
Fix: despeckle(size=0) and despeckle(size=1) were the same.  It makes sense for the condition to remove a speckle to be that it's <= size, not < size.
Cleanup.

- unnecessary initialisation of imageObj (it gets drawn on startup anyway)
- ViewPort width calculation was a bit weird (didn't need to be +=).
Fix: viewPort was not drawing when the thumbnailBox was on the edge.

Since coordinates were scaled and back, binarise() must ensure that it doesn't get out of bounds data from imageObj.  Also, I renamed binarizationThreshold.
Fix: The displayed image was being corrupted a little due to sampling the canvas with non-integer coordinates during binarization.

It was noticeable because it did not occur when the thumbnail box was on a border and its coordinates were integers, so the image would change when the viewer touched the edge.