Add mirror_duplicate() module
Add herringbone parameter to gear()
Tidy up gear() code
Fix handling of hub
Allow for flat polyhole using negative h
Change gear_spacing calculation

If we're calculating gear spacing, there's no need to consider different
circular pitches -- gaers of different circular pitch won't mesh.
Fix warning about negative vector