Remove RuntimeMemory.GetArrayElements()

This method copied every element in the array to a new array, so it increases memory consumption. Besides, it doesn't include values in the dictionary. 

This pull request remove this method and replace with ArrayUtils.GetValues() which is refactored as well to return  ``IEnumerable<StackValue>`` as in most cases we just iterate through elements.

I did basic testing. For the following statements:
```
x = 0..1000000;
x[0] = null;
y = SomeNulls(x);
```
Dynamo consumes around 557MB private bytes before changing the return type to ``IEnumerable<StackValue>``, and the memory usage reduced to 459MB private bytes after change. 
Whenever you get time, try to reduce the exposure of ExecutionMirror, so if it's not used downstream then, just don't use this variable.