multishard_combining_reader: avoid creating the shard reader twice
multishard_combining_reader: avoid creating the shard reader twice

The multishard reader creates its shard readers on demand when they are
first attempted to be used. However at this time the reader migh already
be in the progress of being created, initiated by a previous read-ahead.
To avoid creating the shard reader twice, before creating the reader
check whether there are any read-aheads in progress. If there is, it
already created (is creating or will create) the reader and hence
synchronise with the read ahead. Synchronisation happens via a promise,
the read ahead creates a promise which will be fulfilled when the reader
is created. A concurrent create_reader() call will wait on this promise
instead of attempting to create a new reader.

scylladb/scylla,scylladb/scylla,avikivity/scylla,duarten/scylla,duarten/scylla,duarten/scylla,avikivity/scylla,scylladb/scylla,scylladb/scylla,avikivity/scylla