only play move if square is empty
extract constant
winning rows
refactored win? method to use known combinations
added support for wins from O
added support for diagonals