Better handling of timeouts.  It now does a hard check of available before attempting a byte at a time read, and doesn't rely on a watchdog kicking the socket out from underneath the blocking read.  Introduces a new BTTimeoutException which is treated as non-fatal but at the same seriousness as a CRC32 error (log it, move on to the next read)