Fixups of some DRY violations when parsing command line arguments

* Created StageCommandLineArguments class for parsing String[] args
* Moved logic for stage creation from AbstractStage into a StageFactory
* Other misc. refactoring + additional comments