streaming: Handle stream_mutation rpc handler on all shards
streaming: Handle stream_mutation rpc handler on all shards

In streaming, the sender sends the mutations on all the local shards in
parallel, it is possible that the receiver handle more than one such
connection on the same shard. It is determined by where the tcp
connection goes. Current rpc ignores the dest shard id when sending the
rpc message.

For instance, say node1 has 2 shards, node2 has 2 shards. Currently, we
can end up with like this:

   Node 1 shard 0 -> Node 2 shard 1
   Node 1 shard 1 -> Node 2 shard 1

It is better if we do:

   Node 1 shard 0 -> Node 2 shard 0
   Node 1 shard 1 -> Node 2 shard 1

This patch solves this problem by let the handler always handle on
shard = src_cpu_id % smp::count.

If sender and receiver have the same shard config, it is completely
distributed the work evenly.

If sender and receiver do not have the same shard config, it is
unavoidable some of the shard will do more work than the others.

Tests: dtest update_cluster_layout_tests.py

Message-Id: <1e333d6c4d6ee2d3bc9dc6682054060e55126eef@scylladb.com>

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