Imperative node compare

1. This submission handles the delta changes of nested language blocks
2. As discussed with Luke/Yuke, the functionality for now, is that any change that occurs within a nested block, the entire statement that that block belongs to is re-executed.

given:
a = [Imperative]
{
  if (foo())
  {
     return = [Associative]
     {
          return = 1; <- changing this means  exexuting the entire outer statment 'a = [Imperative] {...}'
     }
  }
  return = bar();
}
does "core.CodeBlockIndex > 1" means coreCodeBlockList.Count > 1? need some comments here.