restrict RandIntGen to generate random numbers in the interval [1,n]

This is based on @ivarne idea
(cf. https://github.com/JuliaLang/julia/pull/8255#issuecomment-54988949),
and continues commit 48f27bc in "avoiding duplicating the getindex logic".

The API to get a RandIntGen object is now to call randintgen(n).
This allows any Integer type to implement this function (e.g. BigInt).
Previously, a call like rand(big(1:10)) caused a stack overflow, it is now
a "no method matching" error, until randintgen(::BigInt) is implemented,
possibly using a new type similar to RandIntGen.
remove redundant rand! method
make rand work with AbstractArray instead of only with Range

This implements the generalization suggested by @ivarne
(https://github.com/JuliaLang/julia/issues/8257#issuecomment-54803220)
or by @lindahua
(https://github.com/JuliaLang/julia/issues/6003#issuecomment-46679039).
This change is very simple thanks to commit 48f27bc.