Fix warnings on 32 bit systems

- Change format specifiers to not make assumptions about integer and
  size_t sizes
- Change audio hash function to shift a different amount based on
  sizeof(size_t)
It was not a bug, but architecture dependent. `size_t` is 32 bit on x86, but 64 bit on x86_64. Now this gets adjusted dynamically.