Use memmove instead of memcpy in copy! Fixes #3937

People seemed on board in #3937

I got burned by this the other day with code that worked on OSX but broke in subtle ways on Linux because it was shifting values in an array using `copy!`.