changed GameState.validChoices from hashmap to arraylist for efficiency.
Efficiencies made:

 when it's my turn, I'll only consider possible routes that start with a placement/pass (if there are none, I pick up but without calculating which bone I should pick up, obviously!)

 each gamestate now has a set containing 'possibleOpponentBones'.  Profiling showed that creating this set used lots of CPU cycles so should only do it once at GameState initialisation (at the cost of extra memory, but not much).

 choosing the next gamestate is now far faster for states where the best route has not been found (eg. for the opponent's move).  It no longer requires the GameState tree to be populated.

 Fixes:
 Two passes now ends the game (as it should)

 Refactoring improvement:
 GameState now manages choosing of next state, so AIController no longer manages the moveCounter (it's all done inside GameState).