fixes #1 and fixes #2

Regarding #2, the DataLoop kept a higher order bit set when it read in and
sent out data. This bit was used to check if there actually was data,
regardless of if it was a 0 or not. This bit was accidently also passed
into the checksum function.
The checksum function now &'s the input to limit only the lower 8 bits.

Regarding #1, the deadlock condition happens when a highfrequency channel
switches to low frequency in the middle of transmitting a packet. The
stream would be considered "open" in that is was still transmitting data,
and therefor it held the lock. when It switches to low freq mode, it uses
control packets and the SendControl function, that need to be able to take
the lock. The stream packet is then never closed.

This happens when a channel is stopped because the device recalculates the
bandwidth requirements while there may still be data left in the buffer.
A buffer clearing mechanism was added to better cope with changes. Also
during the DataLoop, any time a low speed data is sent, an open stream
will be closed.