Add VariableTable, replacement for Scope
Clean up NewIterationContext
Cleanup, rename ScopeDeRefListsInHashtable -> ScopeDeRefListsInThisScope
Remove ScopeDeleteScalar, use ScopeDeleteVariable
Clean up ScopeMapBodyArgs
Always use 'this' scope in ExpandDeRefPromise
Keep a VariableTable for each Bundle stack frame, store edit variables.

We keep only edit variables here for now, all other variables currently
will be kept in the global Scope list.
Add EvalContextVariableRemove and EvalContextVariableRemoveSpecial
Store 'const' variables in EvalContext global VariableTable
Store 'sys' variables in EvalContext global VariableTable
Store 'mon' variables in EvalContext global VariableTable
Clear global VariableTable and stack in EvalContextClear

Replaces EvalContextClearHeap
Set up 'this' scope in stack push for Promise and PromiseIteration frames
Store 'body' variables in EvalContext stack body frame VariableTable
Remove uses of ScopeDeleteVariable, use EvalContextVariableRemove
Store global variables in EvalContext variable table
Store 'match' variables in EvalContext separate table
Store 'this' variables in EvalContext promise stack frames
Remove VSCOPE, global scope list, CF_STCK, global 'this' stack.
Use a hash code for VarRefs in VariableTable, rather than slower VarRefCompare