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.