Uniform01Distribution should not be a UniformRNG

The rationale here is simple: a uniform RNG (in the sense of
the isUniformRNG template) should operate on a closed interval
[min, max], whereas Uniform01Distribution returns values in
the half-open interval [0, 1).
Document the closed-interval requirements for Uniform RNGs
Stricter isUniformRNG that enforces requirements as fully as possible

This new version of the template enforces everything that can be
checked at compile time: the range type, the element type (must be
unsigned integral), the presence of min and max fields.

It is unable to enforce the requirement that the RNG take its values
from the closed [min, max] interval; this is quite obviously something
that the author of RNG code has to ensure, and adding the
isUniformRandom flag to a type needs to serve as a guarantee that the
author has performed such checks.