Fixed GetData with row pitch when used with different element sizes

I originally fixed GetData to work with bytes, then @tomspilman changed it to work with Color, so now it's the time to make it work with different element sizes. I haven't tested it with extreme cases, like reading the 4 byte Color into a 3 byte struct.
Doesn't `stream.Read<T>()` read a `Marshal.SizeOf(typeof(T))` object already?  Why would the for loop need to account for element size if already reads element sized chunks?