Adds function for unbeatable AI to score isolated board at provided depth level
Refactors board scoring methods; using 'with' in spec
Refactors to be more clojuresque
Adds function to return available spots' indexes
Adds functions to update the best spot and best score appropriately
Adds hard computer option to player type selection
Adds fn to return opponent token from spots collection
Simple AI fn accepts a board (instead of spots) and additional args
Game runner passes args needed for unbeatable ai, plus improved readability
Adds high-level specs for unbeatable AI
Adds unbeatable ai minimax scoring and choose best spot functions
Adds another test for blocking opponent victories
Adds function to determine whether to apply min or max
Minimax scoring flips b/t min and max based on depth