Initialize the trainer with a few of the data structures it needs
to train. Also, it is necessary to estimate the number of trees
that it will be given, as many of the UWMs switch training modes
after seeing a fraction of the trees.
This is an initialization method and not part of the constructor
because these Trainers are generally loaded by reflection, and
making this a method instead of a constructor lets the compiler
catch silly errors.