Optimize memcpy alignment and tail code

Optimize memcpy alignment and tail code with a new subroutine.
Also add an optimization for the copy_from/to_user fast path.
Optimize preloads for unaligned case

Bring memcpy performance for the unaligned case, which was sacrificed
a bit in favour of the word-aligned case, more in line with the
performance of the original memcpy function. Early preloads are more
optimal including catch-up with the preload offset in the main loop
resulting in better performance when copying from DRAM.