added winning logic and an overview of cpu logic
Refactored how I get valid moves left, the old method could cause an array out of bounds error
Fixed a potential infinite loop while getting the players input, also corrected the logic that goes around someone winning
First steps of the Computer AI, added a method to see if a player or computer can win with the next move.
Added corner selection logic to the AI, also updated the win checking logic as it was not performing as expected
Logic needed to be adjusted, ended up using too many different methods for array indexes

Game winning paths were adjusted so that the -1 used when playing a
piece no longer throws off the logic.

This required adjustments to the check_for_winner and is_game_winnable
methods.
Corrected the logic around corner selection and winning, needed to change an or to an and