from @rwcarlsen:
Problem is that copy constructors don't propogate.  We can only call one
copy constructor - the deepest level in the inheritance tree.  And after
that, no more copy constructors can/will be called.  So the only way to
initialize superclass members is to call a virtual method up the tree (i.e.
InitFrom).  The Model::InitFrom method takes care of the things that
normally happen in the regular single-arg (only) constructor for cases
where the module might use a copy-constructor instead of the regular
single-arg constructor.  So, in short, either the copy-constructor or the
regular one should work, although I recommend not using the copy
constructor.