Adding basics

.gitignore and pyCharm files
Added Board

Very simple Board class.  Can be used for more than just TTT.

Tests pass
PEP8 pass
Setup as Package

Files are no longer callable directly.  Added a test.py at the top level that will recurse down and call all the test it finds, it'll work with the other upcoming code as well.

Tests pass
PEP8 pass
Added Game

Holds the nuts and bolts of playing a game of TTT:
1) calls each player to pick a square
2) validates their choice
3) checks for win or draw
4) repeat

Tests pass
PEP8 pass
Added Player

ABC for Player.  Needs to be implemented in the front end and handle displaying errors and getting input from the user.

Basics of Computer Player in place.  Certainly not unbeatable but is playable for initial testing and UI purposes.

Tests pass
PEP8 pass
Better validation of input

Player could give us either (A) not a number or (B) a number that is not a valid square.  Handle both and just loop back to player for valid input.

Tests pass
PEP8 pass
Don't display board if the current player is a ComputerPlayer

Computer Player doesn't need to see the board visually to make a decision

Tests pass
PEP8 pass
Handle ending a game prematurely

However the <UI>Game is handling user input, if we get a value of NoneType consider that them wanting to end the game

Clarify the expectation in AbstractPlayer docstring

Tests pass
PEP8 pass
Simple text version of TTT

Nothing fancy but is playable and shows our ground work is working correctly.

Tests pass
PEP8 pass
Player gets the previous move

Needed for unbeatable strategy from NPC but could also be useful for UI purposes (highlighting the last move, etc)

Tests pass
PEP8 pass
Unbeatable NPC

Strategy taken from http://www.wikihow.com/Win-at-Tic-Tac-Toe

If we have first square, we play to win but maybe a draw.  If we have second square, we play to a draw.

Tests pass
PEP8 pass
Let the NPC play itself, á la WarGames

Tests pass
PEP8 pass
Clear() should check for a valid square

Tests pass
PEP8 pass
AbstractGame.winner should be the player object, not just the player marker

Useful if we want to have the player object contain the player's name or something.

Tests pass
PEP8 pass
Better UI experience on text reference game

1) options can be passed on the command line
2) ask for number of human players ... now allows 2 humans to play against each other

Tests pass
PEP8 pass
Write up on my work

Tests pass
PEP8 pass