Marshal IEnumerable as arbitrary rank collection

IEnumerable, ICollection or IDictionary data types are marshaled as
arbitrary rank collection so that nested collection can be marshaled
thru these enumerables.

However if IEnumerable<T> is not marshaled as arbitrary rank collection
because all the element in the collection will be of type T.

Fixes http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2192
Merge branch 'ChocoButter-2Become1' of https://github.com/ikeough/Dynamo into DataMashaling
Merge branch 'ChocoButter-2Become1' of https://github.com/ikeough/Dynamo into DataMashaling

Conflicts:
	src/Libraries/CoreNodes/List.cs
Merge pull request #1283 from sharadkjaiswal/DataMashaling

Marshaling of IEnumerable as arbitrary rank collection