Added improved DataSource.preroll() error reporting/handling (CVP2RI-358)

ODIDDataSource.preroll_livesim_resource() now returns
 HTTPSeekRequestError.OUT_OF_RANGE for seek requests which are outside the
 sim-accessible time/data range (instead of DataSourceError.SEEK_FAILED).

Added try/catch logic for HTTPSeekRequestError around the preroll() call
 in HTTPGet.handle_item_request() and sets the response error code
 appropriately in the catch.

Changed the existing HTTPSeekRequestError catch in the seek object construction
 of HTTPGet.handle_item_request() to just use the HTTPSeekRequestError code
 as the Soup error code (when calling end()). And added a comment to the
 HTTPSeekRequest class that all errors must map to Soup codes (which they
 already do).

Ran livesim tests with invalid time/byte ranges and ensured the error codes
 are returned according to spec (416/Requested Range Not Satisfiable).

Performed sanity checks with valid ranges.
Added HTTP reason code support to HTTPRequest/HTTPGet

Added support to the HTTPRequest class to allow a reason code to be
 passed through to libsoup when calling end().

Changed HTTPGet to pass error.message in catch blocks that call end().

Tested various error conditions to ensure the error message is passed to
 the client.