Implement NEON path for unaligned memcpy

Add NEON path for unaligned memcpy, which is significantly faster
than the previous implementation. One of the tricks is to specify
pointer alignment in NEON loads and stores as accurately as
possible, which decreases the overhead of NEON figuring out the
particular alignment.