BlockSourceBase now honours a maximum number of in-flight requests

It accepts any number of requests, but then queues them up.
Also moves the code closer to being able to split requests up based on
the number of bytes in a continuous block of a request.