fix armv5 alignment issues

ARMv4 and ARMv5 don't provide unaligned memory access as you can read here: http://stackoverflow.com/questions/14032434/casting-pointers-on-embedded-devices/14035351#14035351

We tried to use libtins on an ARMv5 platform and stumbled across this issue.
I tried to replace all occurences of possibly unaligned access with the use of `std::memcpy`.

I hope I found all places but I am not 100% sure.
At least, the tests are now all successful on our platform.

There are some places were I had to add a temporary variable that I simply named `uint16_t_buffer` or `uint32_t_buffer`. These are for sure not the best names for these but I didn't dig too deep into the codebase to come up with better names. So, you may want to change them. ;-)