SeekingHTTP uses a series of HTTP GETs with Range headers to implement io.ReadSeeker and io.ReaderAt.
New initializes a SeekingHTTP for the given URL. The SeekingHTTP.Client field may be set before the first call to Read or Seek.
ReadAt reads len(buf) bytes into buf starting at offset off.
Seek sets the offset for the next Read.
Size uses an HTTP HEAD to find out how many bytes are available in total.