Remove intermediate buffer of image computation
Remove intermediate buffer of image computation

When moving lines to the final layout positions we remove some bytes
between rows of the image. Consequently, the source and destination may
overlap which implies we can not borrow both at the same time for a
copy_from_slice or similar. However, Rust 1.37 introduced a method where
this copy happens internally and does a raw pointer / memory copy. We
are free to use it, avoiding the need for a temporary buffer allocation.

[Benchmark]                      	[Change] 	[Base]  	[Head]  	[Significance]
decode a 512x512 JPEG            	improved 	3.299274	3.228600	0.050000
decode a 512x512 progressive JPEG	         	6.375385	6.313500	0.050000
decode a 512x512 grayscale JPEG  	         	1.362741	1.357700	0.050000
extract metadata from an image   	improved 	1.230496	1.173500	0.050000

image-rs/jpeg-decoder