Changes for base64

This patch changes the prototype for decode_base64 so that the encode / decode methods are consistent (encode(BYTE *) => char* and decode(char*) => BYTE*).
It also does some improvements with unrolling loops so that end conditions are tested only at the end.
The patch also adds some unitary tests.
Before the patch base64_decode() made valgrind complain about uninitialized bits, after valgrind is happy and very quiet.