Implemented simulator-based pacing on ODIDDataSource

Added ODIDUtil.advance_index_to_offset() to move a DataInputStream
 forward to/past the given offset and return the time/offset
 associated with the entry.

Added index file setup logic to ODIDDataSource.start() and
 ODIDDataSource.read_data() to calculate the amount of time
 the next block of data should be available when utilizing
 the sim. When >0, reading is suspended and a timer is set
 to the amount of time where the next block should be available.

Reorganized some of the ODIDDataSource code to accommodate
 the pacing logic and make things a little easier to follow.

Tested with S0-fixed and S0-increasing scenarios. Data reader was
 paced with the live stream to the point where it stopped, as
 expected. Still need to test S0==Sn case...