use AbstractRNG instead of MersenneTwister when possible

The chanded methods are `rand(rng, ::AbstractArray)`, `randn`, `randexp`, `randbool` and their mutating counterparts.
This fixes also a small bug:
```
julia> randbool()
false
julia> randbool(MyCustomRNG()) # does not agree with the docs
0-dimensional BitArray{0}:
true
```