[BUG #7141] (re-)calculate scope information on modified trees

- the old variableoptimizer did the same
[BUG #1966] extended and integrated ProtectionVisitor

- checks for 'eval()', 'with()' and 'new Function()' constructs
- and protects the entire scope chain of those code pieces from variable
  optimization