Fixes from debugging relval 4.22

- Fix opaque string to not include two '?'.
- Break up large readv requests into smaller pieces, within the
  Xrootd server limits.
- Correctly throw an exception on error.
- Tidy up some exception messages to not lose original error.
- Avoid an infinite loop if the Xrootd redirector ignores our
  request to avoid servers.
- Merge adjacent requests when splitting the input vector.

Must be applied after the original multisource-xrootd branch.