Working state. Made some refinements with an eye toward performance.
Not going to push that too far because I don't really care about the
 performance until I'm using the canvas.

There's some fun ideas in here, though. In the score function I'm
adding the length of the tree to the total score. This drastically
reduces the final tree size of the program.

Next version should look a lot more like native Javascript!