Index expressions, pipeline element enumeration reworked

The pipeline enumerated all elements when writing to the output stream.
However, that broke support for assigning enumerable objects to a variable,
as it would be enumerated and therefore converted to an object[].
Now, enumeration always takes place when a ScriptBlock ends which seems
to pretty much match PS behavior.
Added add/multiply for arrays and hashtables
Fixed broken tests
Hashtable tests and first fixes
Fixed tests, support for empty arrays