make memmove/memcpy/swap use the type's alignment

This is a performance improvement, because it guarantees a minimum
alignment to allow it to copy larger chunks with SSE or AVX.