Add OffTheChessBoardException class.

I wanted to have a typed way to indicate an attempt to access a location
off of the ChessBoard.
Add getPiece methods to ChessBoard.

I wanted a better way to access locations on the board without having to
violate encapsulation by direct access and double get()s. This change
may make the getBoard() method unnecessary, but I'll leave it alone for
now. I added tests for my new getters.