Add asserts in Copy (and remove an enforce)

Adding extra asserts always helps. As for the enforce, I'm unsure why it was there in the first place: All the other branches simply make the assumption the target is large enough.
Merge pull request #2052 from monarchdodra/copyAssert

Add asserts in Copy (and remove an enforce)