Refactor help handling

Refactor help handling so that common help strings are inherited from base classes. This significantly reduces duplication of help strings within the code.