Change where moves are stored in Game structs

Since a Game can have multiple children, it doesn't make sense to store
the move made from a position on the node for that position - instead we
must store the move used to get to the position.
Simplify the Game data structure.

Rather than having a separate struct to represent a linked list of nodes
for the children of a node, just keep a pointer to the next sibling on
the node itself.