Performance Update for AcceptTree.Flatten

AcceptTree.Flatten was previously directly using append() on a default (zero capacity) slice several times, and it would recurse through both the left and right nodes.  Since append() is much more expensive when cap(slice) == len(slice) and allocating a separate slice for each recursive call is inefficient, I added a Size value to AcceptTree, which keeps track of the total number of nodes in the tree.  Flatten, then, can allocate the full capacity required for all elements in the tree, then pass a pointer to the fully allocated slice to a helper function, which now performs the work of populating the fully allocated slice.  This means the slice is allocated once and append() is never called when cap(slice) == len(slice).