Revert to preload of 128 for RPi preferred memcpy
Add tests for word aligned sizes of 8 and 30 bytes
Optimize for word-aligned small sizes

Tracing data has shown that memcpy is frequently called with small
sizes in the range 1-64 and the source and destination often word
aligned. By moving part of the small size code to the front of
the assembler function, and reducing branches for the word-aligned
case, a nice speed-up is achieved that should translate into
real-world benefits for the  memcpy replacement. Stack pushes/pops
have also been reduced.

Before:
3 bytes randomly aligned: 50.47 MB/s
8 bytes randomly aligned: 86.00 MB/s (armv5te: 117.70 MB/s)
8 bytes word aligned: 163.40 MB/s
17 bytes randomly aligned: 161.44 MB/s
30 bytes randomly aligned: 243.33 MB/s (armv5te: 263.56 MB/s)
30 bytes word aligned: 363.47 MB/s
64 bytes randomly aligned: 401.73 MB/s
296 bytes 4-byte aligned: 777.17 MB/s

After:
3 bytes randomly aligned: 50.63 MB/s
8 bytes randomly aligned: 88.62 MB/s
8 bytes word aligned: 178.99 MB/s
17 bytes randomly aligned: 165.57 MB/s
30 bytes randomly aligned: 244.72 MB/s
30 bytes word aligned: 467.72 MB/s
64 bytes randomly aligned: 402.30 MB/s
296 bytes 4-byte aligned: 778.51 MB/s
Optimize small sizes for unaligned case

Implement a special path for sizes < 8 for the unaligned case.

Use a small size threshold of 68 by default for write_align of 32
of 16; only if the source and destination have a different alignment
within a word, use a small size threshold of 36 (in this case, the
code path for larger sizes is faster).
Revert to a fixed small size threshold of 52 (compromise).