Fix Issue #12835: open lower bound for integral-type uniform()

Added a cast to ensure the setting of lower bound can handle character types and integral types smaller than `int`.  The additional unittests should prevent such issues from arising again.