Corrected hashing of UTF-8 strings.

There was an issue with hashing string formed of multi-byte characters.
Only one of the byte of the character was taken into account when
building the hash. This fix solves the situation.

Unfortunately, this makes any non-latin passwords previously hashed by
the code obsolete and totally impossible to verify. Any password containing
UTF-8 multi-byte characters hashed with the previous version of the code
cannot be verified after this change is applied.

I recommend using this patch only if you are starting up a new project and to
keep using the old code version if you don't have the capability in your
project of having both versions in parallel until all your user's passwords
are rolled-over to the new hashing algorithm.

I added a unit test to demonstrate that the new algorithm works as
expected with multi-byte characters.