`copy`, `copy_nonoverlapping` and `write_bytes` currently accept bad pointers when the size is 0, because libstd relies on this. I think we should enforce the check, and fix libstd.