CDAP-730 Added capability to start a program with runtime args and to set/get runtime args

* StartProgramCommand now supports runtime args
* Added SetProgramRuntimeArgs and GetProgramRuntimeArgs
* Refactored CLIMainTest to multiple test methods
I kind of prefer `with runtime arguments '{}'` as opposed to `no runtime arguments`, sometimes "no runtime arguments" could mean different things - null or empty? When running with saved runtime args, and we explicitly state what the runtime arguments, it's a little better since we know exactly what the saved runtime args are.

A bigger concern to me is explicitly letting the user know if the program was started using the saved runtime arguments, or user-provided runtime arguments.