Hide implementation of Generator type

Taking the advice of @jvoigtlaender to keep the abstraction strong and
design a proper API for constructing custom Generators