scylla-gdb.py: introduce scylla read-stats
scylla-gdb.py: introduce scylla read-stats

Too many or too resource-hungry reads often lie at the heart of issues
that require an investigation with gdb. Therefore it is very useful to
have a way to summarize all reads found on a shard with their states and
resource consumptions. This is exactly what this new command does. For
this it uses the reader concurrency semaphores and their permits
respectively, which are now arranged in an intrusive list and therefore
are enumerable.
Example output:
(gdb) scylla read-stats
Semaphore _read_concurrency_sem with: 1/100 count and 14334414/14302576 memory resources, queued: 0, inactive=1
   permits count       memory table/description/state
         1     1     14279738 multishard_mutation_query_test.fuzzy_test/fuzzy-test/active
        16     0        53532 multishard_mutation_query_test.fuzzy_test/shard-reader/active
         1     0         1144 multishard_mutation_query_test.fuzzy_test/shard-reader/inactive
         1     0            0 *.*/view_builder/active
         1     0            0 multishard_mutation_query_test.fuzzy_test/multishard-mutation-query/active
        20     1     14334414 Total

The command accepts a list of semaphores to dump reads from as its
arguments, or if none are provided, it will dump reads from the
semaphores of the local database instance.

scylladb/scylla,scylladb/scylla,scylladb/scylla,scylladb/scylla