Added __hash__ methods for RawData nd String

If you use RawData or String for something that uses hashing, like keys in dicts, the hash should return the same value for the same Strings in different instances.
Modified constructors of RawData and String to accept instances of the class itself

Also added some more tests.
Fixed error when trying to call RawData with an unicode object

It was just a trivial error but it took ages to find it...