Effectively provide an AbstractArray view of a generator or iterator.
That means it will be possible to pass a generator to methods expecting
arrays. The only exported function is called array and array(g) can be
used like a read-only abstract array.
The restrictions to the generators and iterators are that they need to have
a size.
Usage:
    using GeneratorArrays
    a = array(x^2 for x in 0:0.01:1)
    a[1] == 0
    a[51] ≈ 0.25
    a[101] == 1
For example you can exploit the binary-search functionality of
searchsorted without evaluating the function at all grid points.
    using GeneratorArrays
    n = 10^6
    a = randn(ComplexF64, n);
    p = sortperm(a, by=real);
    # positions in a[p] where numbers in corresponding vertical stripes are found
    res = Int[]
    for h in -3:0.1:3
        x = searchsortedfirst(array(real(a[p[i]]) for i in 1:n), h)
        push!(res, x)
    end
    
    mysin(x) = begin println(x); sin(x); end
    # finding inverse value of a monotonic function
    searchsortedfirst(array(mysin(x) for x in 0:0.001:3.14), 0.5)
    using Primes
    # first prime greater than 10^6 ( note: primes(10^6, 10^6+100) is much better)
    searchsortedfirst(array(prime(i) for i = 5*10^4:10^5), 10^6)