More MiniMaxTree implementation

Implements a recursive function to process tree.
Works by creating nodes as they are needed and processing them.

Added functions as needed to Node.

Changed Evaluatable to not return all children at once, but instead get one at a time with the getNextState() method. This allows for efficient processing of the tree.