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)
was the "32" a bug? is the current expresion a bug? 

simple math:
```
         32 == sizeof(size_t) * 8 - 2
     2 + 32 == sizeof(size_t) * 8
         34 == sizeof(size_t) * 8

       34/8 == sizeof(size_t)
   float^           integer^
!??!?!?!??!?!
```
Could anyone please explain me what's going on?