Refactor s8/s16 to float conversion.

It's pretty much all done the same way.  Note that normals have always
been a little inconsistent between 127/128 and 32767/32768.  But it's
probably not causing a major impact...