Fixes for ODIDDataSource processing of DTCPCleartextRequests for protected program streams

ODIDDataSource.read_data() had a bug calculating the buffer sizes when
 the range_offset_list had multiple offsets (as it does when processing
 encrypted program streams) and the range_start is not 0 (as it is when
 processing DTCPCleartextRequests/Range.dtcp.com). The logic was attempting
 to subtract out total_bytes_read. This logic would only work when
 range_start is 0.

Changed the logic to calculate the buffer size using the adjacent entries in
 the range_offset_list. And made the calculation logic conditional on whether
 all the data has been read and added an assert to ensure/catch any case
 where read_data attempts to read beyond the end of the list.

Tested with DTCP-protected program streams with various forms of
 Range.dtcp.com request headers. Performed sanity tests with non-protected
 streams.