This was temporarily used for shader key hashing, but now an original
implementation using zlib's crc32 function from crcracker
(https://github.com/NotNite/crcracker/) is used instead. Tests are added
and existing ones are used to ensure it's the same.