Random time value

Currently this is still a very half-assed setup but I'm opening a PR for some early feedback. The reason for this PR is the following issue: https://github.com/rubinius/rubinius/issues/2412

Current TODO:

- [x] Support Date instances
- [x] Support DateTime instances
- [x] Make the setup a bit more generic (e.g. call `#to_if`/`#to_i` on the min/max if possible)
- [x] Cover more cases (e.g. better checking if the returned value actually falls in the range) in the test suite

p.s. I wrote this while half asleep, just a fair warning ahead.