RFC support for rand(Ranges) and rand(Ranges,dims)

previously rand accepted only Range1{T<:Integer} 
closes #5041

allows things like
```
julia> rand(1:1//2:10,1,5)
1x5 Array{Rational{Int64},2}:
 19//2  19//2  2//1  8//1  17//2
julia> rand(1:7:100,1,5)
1x5 Array{Int64,2}:
 57  92  15  99  50
```

I left in most of the specific Range1{T<:Integer} code because I wasn't sure about performance.