Fix between/c, </c, >/c random value generators

The random value generators for the between/c, </c and >/c contracts all feed random a value computed from a user-provided input without ensuring that the value is an exact integer. So if you feed them an inexact (or rational), they do some math, get something random won't like, and then it explodes.

I feel I should describe the fix, but I can't come up with anything more succinct than the diff.

The change causes the random value generators to always produce inexact numbers, rather than the integers you would've gotten by necessity before. Obviously shouldn't violate any contracts, but I feel I should point it out.

Also fixed a typo in the docs, and added some tests.