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 'mergeDataWithLocalDeclarations' option
  for collecting variable data for pseudocode

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