Make a clone of input model as a very first step in generator so that rest of generator always works with transient model.
This ensures
 (a) each node got correct TracingUtil.ORIGINAL_INPUT_NODE (for traceInfo) in SNode.userObjects;
 (b) FastNodeFinder gives nodes in different order for regular and transient SModel (sorted by nodeid from DefaultFastNodeFinder,
      natural iteration order for TransientModelNodeFinder). Using transient model as input always allows not no get into such difference;
 (c) There's planned switch to GeneratorSNode/GeneratorSModel to facilitate model reconstruction from delta and we'll need to switch
      to 'transient' (generator) model here anyway

trace.info files are updated to reflect better (fine-grained) identification of origin node (used to be one of the parents)
Refactor CloneUtil to feel more OOP-like; less stack stress.
With transient model as our initial model, logic to propagate original node reference has changed.  copyUserObjects() would mostly do the trick.
Regenerate models that depend on initial element ordering (used to be sorted by nodeid, now natural model order) - language with IconResourceBundle
BInaryOperationUtil.isOverloading uses == to match overloaded operator declaration to its usage.
Source of declarations is initial model, source of usages is current input model, hence, once usage comes from a transient copy of original model
(with reference to operator declaration copy in the same transient model), isOverloaded can't match
(transientModel.copyOfOperatorDecl != originalInputModel.operatorDecl). The fix is to use current input model when collecting operators (there seems to be
no reason to use originalInputModel anyway).
SimpleBuilders do copy of attach statement to build nested elements. node.copy operation didn't set trace to original node, hence trace.info used to point
to nearest available element. Now, with transient model as generator input (with complete trace to original elements), origin is preserved.
Therefore, new roots are present in trace.info, pointing to builder.attach elements (that result in statements that establish parent-child relationship).
When quotation runs for a transient model, external references in created nodes (pointing outside of quotation) may reference transient model, not the original one.
Such a reference won't resolve once generation step is over. The fix tries to find original model for reference target, if any.
ClosureLiteraltargetIface test in closures.test[s] declares a concept and creates an instance with quotation mechanism (helper model).
Once the input model in generator is transient, the reference from quotation to declared class is a reference to transient model.