Krun options

**please review**

* use JCommander for krun
* clean up krun frontend to be more generic
* fix some hacky behavior in some of the options
I will put a todo at each of these call sites telling me to fix this code when I introduce dependency injection. Dependency injection is the tool that would allow us to implement this functionality correctly in a clean way.