Initial commit

model.py is functional representation of the tic-tac-toe board, an update
function, and state arrays for implementing checks.

strategy.py is AI logic, currently only scaffolding with no
implementation.
AI Logic Added

strategy.py now has functioning logic. Should play a perfect game with a
short circuit currently assuming opponent plays perfectly.

model.py has a number of new tests. Current implementation of
can_player_fork is limited to checking for the single case of a diagonal
X-O-X to prevent the AI from throwing a game.
Added game engine

Uses terminal output to display the model.

Found bug dealing with left_diagonal line check. Only two spaces are being
checked properly.
Full functioning game.

Game loop runs, computer does not lose, when a winner is decided or draw
condition met, game loop exits gracefully back to the main_loop.

Doc strings are basic, but enumerate the return value of all functions.

Need to write tests.
Added unit tests.

Began writing unittests against functions. Test found bug that allowed
player to overwrite a square. Bug fixed, test now passes.
More tests

Renamed one function in model.py to prevent confusion with testcases.

Complete test of model.py assuming an empty board.
Finished Model and Strategy Unit Tests

Test cases ensure the strategy is working as intended, and the model
updates and returns values as expected.

Converted generic Exception to a new class DoubleMoveError in order to
handle the specific case in the control code. Control code updated, and
tests changed to reflect expected error.