Redefined Iterator in terms of boost::iterator_facade

Also various minor changes and fixes
Added GeneratorIteratorConst