Cross set computation and tests.
Middle cross-set computation and test.
Basic structure for computing cross sets. Changed board.empty_positions to set.
Untested, but cross set computation/updating without mid-cross support.
Algorithm for re-determining cross-sets is basically done but needs a second look and then some. No tests (!) either.
Fixed mid-cross algorithm and redo cross algorithm, but no tests that are desperately needed.
Merge branch 'master' into move_generation and cleanup refactoring.

Conflicts:
	engine/game.py
Staging Game changes after merge.
Better decoupling of test cases in Game tests.
Added wordlist directory to gitignore
Zeroing out letter sets on occupied tiles from moves.
Failing test for cross sets but it seems to work.
Passing cross-set scenario tests for basic situations.
Passing basic mid-cross test. Tweak to gaddag mid cross algo, flip direction of parallel mid-cross check for move ends.
Finished tests for mid cross-sets.
Added debug option to the text UI.
Changed move word-building to count skipped board tiles in _redo_crosses.
Added OSPD4 wordlist back into the repo.
Fixed bug in _redo_crosses that didn't account for prefix/suffix length when assigning cross sets. Added appropriate test case.
Fix single-letter play bug that rejected move if word in direction of candidate is 1 letter.