Model now uses a Tree to hold its data.

Some speed-up tricks have been added to PuzzleGenerator at the cost of
memory usage.

Signed-off-by: Szeren <samuelbyronwiley@gmail.com>