osd: convert shard_id_t from uint8_t to struct

The struct contains a single uint8_t and is preferred to control
conversions that would otherwise be implicit.

http://tracker.ceph.com/issues/8254 Fixes: #8254

Signed-off-by: Loic Dachary <loic@dachary.org>
osd: loop over shard_t instead of shard_id_t

When looping in the range [0,number of shards[ using a shard_t variable
which is an integer instead of shard_id_t. The alternative would be
define the ++ operator on shard_id_t but since the two are used
interchangeably in a number of places, that seems overkill.

Signed-off-by: Loic Dachary <loic@dachary.org>
osd: explicit shard_id_t() and NO_SHARD

Whenever an integer or a shard_t needs to be converted in a shard_id_t,
replace the implicit conversion with an explicit call to the
constructor.

Whenever a ghobject_t::NO_SHARD and ghobject_t::no_shard() needs to be
converted into a shard_id_t, replace it with shard_id_t::NO_SHARD

Signed-off-by: Loic Dachary <loic@dachary.org>