Optimize memset/zero for certain alignment cases

The performance of some common alignment cases for memset/memzero
is improved. Also, add MEMSET_WRITE_ALIGN_BYTES which defines the
number of bytes to align to in memset/memzero. For armv6 (tested
on Raspberry Pi), write alignment to 8 bytes is optimal,
minimizing overhead for smaller sizes, as opposed to write
alignment to 32 bytes. This should help mitigate a performance
regression of the optimized ARM memory functions patch that seen
in memset when profiling certain benchmarks.

The benchmark program has been improved with better handling of
memset/memzero including new tests.