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
Why not use
```java
assert (K.tool == null) : "Can only call setTool once";
```
instead?