Clean up implementation (step 2)

**Built over #171**

 - The generators are now unit structs
 - Turn all member functions into global functions
 - As a whole, functions are now much easier to read
 - Add a `generators::Generator` trait
 - Remove `#![features(glob)]` and all its usages