Added .idea/ to .gitignore
Added first test (of Word)
Added a new constructor to Board, made the fields private, and added
accessors.  Added hashCode() and equals() methods.  Added tests.
Added new constructor and getNumLetters() accessor.  Added hashCode()
and equals() methods.  Added tests.
Added hashCode(), equals(), and toString() methods.
Added a new constructor to WordSet that takes an explicit set of words,
and updated the existing WordSet() constructor to *exclude* words with
length 1 or 2.   Added tests for these in WordSetTest.java.
Renamed BoardPosition -> BoardTreePosition.

BoardTreePosition is a position within the game tree for a single board.
Extracting out some of the bit-twiddling code into its own static class,
MaskUtils, and adding a test.

This will replace code in the BoardState class to begin...
Added the charAt accessor.
Fixed two bugs (in the constructor and in the neighbors functions),
and updated the neighbors method to return the given LetterPoint (the
center) as well as all the immediately adjacent neighbors.

Added LetterPointTest.java, for unit testing.
Added a copy constructor, and two new methods (add and remove) which
modify the given LetterSet directly.  (These two latter methods may be
removed later, I thought I needed them for the word-enumeration code
upcoming in Board, but that doesn't appear to be the case).
Added a test game file to src/test/resources, for testing the game
loading code that is coming up.
Removing the 'word' and 'board' fields, and updating the constructor
to only take an array of LetterPoint objects.  Removing some of the
board specific methods, and replacing them with simple size/getPoint
accessor methods.  Adding the hashCode/equals/toString method trio.

Adding testing.

All of these changes basically make the WordPlay independent of a
particular Board -- it can be thought of, for the moment, as an array of
LetterPoint objects mostly.
Moving some of the bit-twiddling methods to MaskUtils, fleshing out the
implementations of the methods like updateDefended, and fixing bugs.
Adding a near-complete set of unit tests.
Major changes to Board.  Moving the getWord method from
BoardTreePosition into this class, and adding some basic accessors (like
getLetter).  Adding several methods to turn arrays of letters/ambiguity
codes into WordPlay objects (these will help with Game loading,
shortly).  Also adding an 'ambiguity' field, private, to help with
figuring out which letter (when there are multiple options for a single
letter) is being used based on the ambiguity codes, without having to do
a linear search each time.

Mostly, though, the big change in this commit is the addition of the
enumerateWordPlays method, which takes a given Word and returns all the
ways (via a Collection of WordPlay objects) that that word could be
played on this board.

This is the last major missing requirement for a tree-search routine.
Adding a lastPlay field and play methods to BoardTreePosition.

Also updated with a score method, to allow for scoring leaf positions.

Finally, introduced unit testing for this class.
Adding a basic game loader, which loads saved games from files.
Adding PlayTest, which will be (one of) the overall integration test
classes, testing whether the entire code can be stitched together to
re-create a played game.