Make Hash independent of char signedness

Solves an elusive issue with BloomFilterPolicy and interoperability of data files between platforms with signed char (such as x86) and platforms with unsigned char (such as ARM) (see https://github.com/bitcoin/bitcoin/issues/2293).

- Add casts to Hash() to treat chars as unsigned (I think this was  intended).
- Add tests for Hash.
- Change name of algoritm in BloomFilterPolicy::Name to make sure that filters are recomputed; this provides forward and backward compatibility. BloomFilterPolicy has the only use of Hash() that is stored to disk.

I suppose we want to take this upstream first, but those that need this can already apply this patch.