Refactoring of the help generation system

Starts work on a significant refactoring of the help generation system:

- Interface and abstraction
- Multiple CommandUsageGenerator implementations for different targets

Build is currently broken as haven't worked my way through all the
required changes yet
Complete initial usage generation refactoring

This commit brings the build back into a working state and completes the
initial refactoring of the help generation APIs such that you can now
instantiate and use a usage generator of your choice.