Curried tree constructor parameters.

Currying causes anything not in the first set of parameters
to be tossed after construction is completed. By currying the
parameters so that the hash function is in the second set,
we do not needlessly carry around the hash function object in
our tree. We have the computer hash already, as well as the
type of the hash function stored as a type parameter, so the
extra object is no longer necessary.