Make Hash independent of char signedness

Solves an illusive issue with BloomFilterPolicy and interoperability of data files between platforms with signed char (such as x86) and platforms with unsigned char (such as ARM).

- 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

I suppose we want to take this upstream first, but those that need this can already apply this patch.