use boost mersenne twister rng, add boost::random dependency

This is a squash of work done in april, see closed github pull
request #160 .