There's a couple of other types in the public interface of Tree that should
be teased out, and it feels odd to have one type in one file and a bunch of
others in another. So this sets us up for having them all the same place.
This should make it easier for the reader to find related information.