make sure `rand(sampler, dims)` works (#51643)
For any object `x` from which one can sample, the `Random` API also
requires that `rand(rng, Sampler(typeof(rng), x), [dims])` works. So add
tests for that, and fix `rand(Tuple{...})` accordingly, which was not
using `SamplerTag` fully correctly.
More precisely, the `Sampler` constructor for tuple types was returning
a `SamplerTag` object whose `gentype` was returning the wrong type,
leading to the wrong eltype of the output array for a call like
`rand(rng, Sampler(rng, Tuple{...}), dims)`, so filling this array with
random values was failing.