func NewTree(s DigestSlice) *Tree {
	rows, data := allocateTree(len(s))
	last_row := len(rows) - 1
	for i, digest := range s {
		copy(rows[last_row][i*64:], []byte(digest))
	}
	return &Tree{
		rows: rows,
		data: data,
	}
}
NewTree creates a new Tree from a DigestSlice, and copies the digests into
the tree.  However, it does not compute the tree.
package id
import (
	"bytes"
	"crypto/sha512"
)
type Tree struct {
	data []byte
	rows [][]byte
}