Do not hide real exception, throw it if can't detect any particular kind
1. Temp fix for reference resolution for detached model fragments.
  E.g. collection.foreach got replaced with bl.for, and references to loop variable from inside 'foreach' need access to var decl to get updated with vardecl from 'for'
  Reference resolution comes when foreach is 'detached' from input model (replaced with 'for' tree), and regular SReference (VariableReference.variable) resolution
  approach (take model and find target by nodeid) doesn't work - there's no model any longer. To overcome this, the references in detached subtree are made
  'direct', i.e. point right to SNode, not (modelId+nodeId). However, generally this is not a solution, as it doesn't cover all possible ways users may access input
  model from within ReferenceMacro queries.
2. Get ready for in-place not only during non-primary steps: respect that parallel generator and root mappings may lead to copySrc being invoked for
  mapped, not copied root.
Refactor how TG is invoked - get rid of duplicated code (creation/cleanup of transient model, logic to update dependency builder, model imports update)
Provisional code to enable in-place model transormations at the very first step (to make model writable) is turned off for the time being.
Order of nodes from regularModel.FastNodeFinder and transientModel.FastNodeFinder is different - former uses set and sorts by nodeid, latter keeps order nodes were
found in the model. It's possible for either model to serve as generator input, and aforementioned peculiarity of the FNF may lead to  different order of output elements
(e.g. actions.QueriesGenerated, COPY-SRCL(inputModel.nodes(SideTransformHintSubstituteActionsBuilder)). The fix ensures FNF for regular models preserves order
of nodes the way they are in the model (depth-first). There seems to be little value in sorting (other than preserving order).
Refactor FastNodeFinder: extracted common code (AbstractFastNodeFinder) to share with TransientModelNodeFinder
Merge remote-tracking branch 'origin/master' into 3.1/artem/default

Conflicts:
	core/generator/source/jetbrains/mps/generator/impl/GenerationSession.java
In-place generation for major steps (without create/map root rules)
Merge remote-tracking branch 'origin/master' into 3.1/artem/default
Update references to replaced elements *before* actual replacement takes place (otherwise, getTargetNode doesn't resolve); do the structural changes once every reference has been handled.
ReferenceMacro always tells null as it's target model reference. Old code (myTargetModelReference is no longer initialized) removed
Turn off FastNodeFinder update on inplace model changes (huge slowdown when there are a lot of (e.g. 9k) inplace changes.
Keep user informed about time spent applying delta.
Merge remote-tracking branch 'origin/master' into 3.1/artem/default
Apparently, there's reason to keep target model reference as unknown (otherwise, reference macro that produce fq string references (with qualifiers like "[gnu.tove]TLongArrayList") stop working)
Refactor mps.make.script and make.facet to use LABEL instead of IF(true)
Merge branch '3.1/artem/RefactorJobDefMake'