Make reading a subrange of the file more efficient.

This fixes #8. As a result of this change, only the requested samples are read when loading a subrange of the WAV file. Prior to this change, the entire file was read into memory before returning a subrange to the user.
Merge branch 'issue8-subrange'