Fix issues with Thumb/ARM interworking and add memset function

Fix issues related to Thumb/ARM interworking by replacing
"mov pc, lr" instructions with "bx lr" and compiling with
"mthumb-interwork".

Also add an optimized memset function in the libfastarm replacement
library.
Add option for aligned access to new memcpy family, and optimize

An option to force strictly aligned memory access in the new memcpy
family. This is slightly slower on most platforms and increases
code size.

Also allow the fast path to be disabled, resulting in significantly
reduced code size at the expense of lower performance for small
sizes. This could be beneficial on platforms with small CPU caches
and limited branch prediction.

Add some other small optimizations.