decoder/dsdiff: support only one "DSD" chunk

Eliminate the loop from dsdiff_stream_decode().  It makes the code
complex, real-world files with multiple DSD chunks are outside of the
specification, and the "chunk_size" variable would be bogus anyway.
decoder/dsdiff: eliminate local variable "buffer_samples"
decoder/dsdiff: don't skip remaining bytes

Nobody cares.
decoder/dsdiff: add local variable "remaining_bytes"

Remember the chunk's total size.
decoder/dsdiff: refactor the main decoder loop

Check for STOP before decoding the first chunk.  This reduces the
command latency.
decoder/dsdiff: implement seeking