support ranges for rand & rand_i

Makes rand behave more like Ruby.

Note:
There is still a behaviour difference with
```ruby
#Ruby
rand(0) =>  0.9 (0.0 - 1.0)
#SonicPi
rand(0) => Exception.
```
but frankly Ruby is being silly, so I'm happy with the exception.