Factor out some common code in hotkeys_module_editor.cpp
Modify GetCenter and Rotate functions in DRAWSEGMENT to act according to the type of the edge
Add duplicate and exact move tools to modedit

These are accessible via the context menu, and via hotkeys
Get move exact working in the GAL modes too
Increment pad numbers when duplicating. Move pad number incrementing into the D_PAD and MODULE classes
Tweaks to the duplicate and move-exact tools
Add an 'undo inhibit counter' to allow tools to declare an atomic operation. Use this to prevent a duplication registering two undos: one duplicate and one move
Also use undo inhibition to prevent multiple undo points when dragging in EDIT_TOOL
Handle all cases in switch statements to avoid warnings
Rotate selections together in the GAL when moving exactly
Cache selection before acting on it when duplicating in GAL, to avoid it changing under us
Add ability to parse a text field to internal angle representation. Use in the move exact dialog, along with other KiCad-specific text entry routines. Also reset an empty field to 0 on focus loss.
Code style and warning fixes