Switch from sync.Pool to a per-tree freelist.

Done for a couple reasons, but the big one is that trees may have different
sized nodes.