Avoid modifying input arguments of astropy.nddata.convolve

The repository version of nddata.convolve modifies both input arguments --
the type of the input image, and the type and normalization of the kernel.
This is irritating -- and there is no good reason to do so because it makes
copies of all the input arrays anyways (because it uses .astype without
copyto=False).  This version fixes that so that the inputs aren't modified,
and also tries to avoid making a copy of the input image if possible.

* Now explicitly make working copies, doing type conversion.
* As a bonus, the input type of lists is now observed
* Note that the FFT code (convolve_fft) is completely untouched.
* Passes all convolution unit tests.