SDL_sound: Various fixes/cleanup.

NewSampleFromFile() tried to dereference a null pointer if the
corresponding C call failed. The Go signature has changed and
it now returns an error in this case.

GetError() now returns an error instead of string.

Buffer_int16() always returned a full buffersize worth of
samples, even if the entire buffer was not read in the last
call to Decode()/DecodeAll() (eg. at EOF). It now only
returns the samples that were actually read.