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
We can definitely live with it but I don't think this API is very good for several reasons:

1. How do we expect user of this API to decide what's the current terminal's background color?
2. If we want to use black as default, how do we expect user to know what default we're using? Instead I think we should provide a function that uses the default value for color.
3. Let's say in the future we decided to use `$COLORFGBG` to detect background color. We'll have to modify every single call site.

But like I said it's not a huge problem. (we have more important problems IMO, like tests)