SliceGuarantor: fix expansion of blocks

When checking whether slices were wholly contained within the current
expansion iteration's expansionBlocks, checkWhole repeatedly used and
expanded on the same expansionBlocks bounding box for each call. This
could result in cases where, for example, expansion occurred in positive
x, and then positive y. However, since the original set of blocks,
expansionBlocks, was expanded in both cases, the result expandedBlocks
would not contain blocks at locations x+1, y+1. The bounding box of
expandedBlocks (and therefore expansionBlocks for the next iteration)
would contain blocks not actually in expandedBlocks. Slices would still
be extracted for these blocks, because slices are extracted according to
the bounding box of the block set and not the blocks themselves. Thus
slices could be extracted that would end up being required by a conflict
set, but overlapped with no block in the expansionBlock, and therefore
were not stored because they were not returned by collectSlicesByBlock.
The conflict set would still be stored, resulting in an integrity error
by referencing an unstored block.

Instead have checkWhole work directly with the bounding box of
expandedBlocks, which ensures a rectangular resulting set of blocks.

Closes catsop/CATMAID#6.