Validate column, row in Board.setCellContents

Throw an error if either the column or row are out of bounds
Added a spec for detecting connected components along an edge

Verify that Board.getConnectedComponents finds a connected cluster
that goes down the right edge
Trim the number of recursive calls to visitConnectedComponent

Make the out-of-bounds tests on the caller side and don't make
recursive calls for cells that are out of bounds.