remove boost distributions

Unforunately we can't use boost distributions because they aren't
guaranteed to gie the same result or on all platform, or that they
won't change in future versions of the library. In contrast
boost::mt19937 guarantees implementation, and the exact values of
the generator, for a given seed, for all platforms.

See source code comments for further discussion.

I made a very simple small int distribution function, using
modulus, which essentially matches the implementation of boost
uniform small int, except that some of the bells and whistles
having to do with handling exotic types and generators are
removed. This commit adds this function to random_new and changes
over the source code to use it, so we dont use any boost random
distributions anywhere.