removed initial map for start instruction
formatting
extracted PseudocodeVariableDataCollector
made PseudocodeVariableDataCollector know about variables

(not about abstract data)
rename to kt file
rewrote PseudocodeVariableDataCollector to kotlin
minor: added @NotNull annotation
added AbstractVariablesDataTest
Added LexicalScope.

Each instruction has a reference to a lexical scope it was generated in.
The lexical scope is: block, for loop, catch clause, a declaration of: function, function literal, class/object, etc.
Added/updated tests for LexicalScope.
refactoring: PseudocodeVariableDataCollector
 added a reference to pseudocode
jump after 'for' cycle to loop parameter change
not the cycle body
store only data for variables declared in current lexical scope

remove data for other variables (when leaving a scope)
refactoring: extracted local function updateEdgeDataForInstruction
rename to kt file
added test for pseudocode memory overhead
rewrote PseudocodeTraverser to kotlin
added 'getParent' to Pseudocode

fixed AbstractVariablesDataTest:
variable data shouldn't be built for locals as independent declarations
added 'mergeDataWithLocalDeclarations' option
  for collecting variable data for pseudocode

  removed using data from outer context
  for local declarations for 'variable initializers' analysis
improved postProcess:

collect (and cache) reachable instructions for local declarations
after processing all parent instructions