faster rand!(::MersenneTwister, ::Array{T}) for IntTypes and Float16/32

This PR tries to waste less random bits for array filling, and also uses `dsfmt_fill_array_close1_open2` function on non-`Float64` arrays.

Edit: better timings using this function:
```
function arr(T, n)
    a = Array(T, n)
    m = MersenneTwister()
    tic()
    rand!(m, a)
    toc()
end
for T in [Int8, Int16, Int32, Int64, Int128, Float16, Float32]
    arr(T, 10^8÷sizeof(T))
end
```
| Type     |    PR | master (64aa84d) | master/PR |
|----------|-------|--------|-----------|
| Int8     | 0.364 |   3.74 |      10.3 |
| Int16    | 0.367 |   1.94 |       5.3 |
| Int32/Int64/Int128    | 0.360 |   1.05 |       2.9 |
| Float16  |  2.71 |   5.37 |       2.0 |
| Float32  | 0.455 |   1.27 |       2.8 |

The results are similar for unsigned types (and also a 3x speedup for `rand!(::BitArray)`).
(I would be interested if someone finds very different speedups).