clean up and extend generic copy! methods. fixes part of #4633

copy!(dest, src, do=1) is gone; the core function is copy!(dest, doffs, src, soffs, N)

there are now more generic fallbacks, so for example this works:

julia> copy!(a, 1, "abc\u2200z", 2, 3)
3-element Array{Float32,1}:
   98.0
   99.0
 8704.0