implement offline game

Implement the offline game type, whose default size is 4 x 4.  The
offline game type can be selected by supplying --local when running
the program.
implement curses for manual player

Implement a curses-based interface for the manual player class.  A
grid of cards is shown with cards' values being revealed when
selected in a guess (and obscured on the next guess), and removed
when a guess finds matching cards.

This change requires the addition of the ``notify_outcome`` method
to the Player interface.  This method is called with the result and
message at the end of the game.

One outstanding item is to not reset the terminal at the end of the
game, because the final game state and message are cleared when
curses cleans up after itself.