Added support for async command line

Currently the `OnExecute` command only accepts `Action<int>` delegates, which means we're right back to normal (non K) cmd applications if we want to do something async. This results in workarounds like creating an async method that is the actual "juice" of the cmd, and having simple `OnExecute(() => CallMyAsyncMethod().Result)`. Part of the beauty of K was the small things, like support for async main methods etc. and I think this should extend to the `CommandLineUtils` as well.

So here is a simple wrapper that takes a `Func<Task<int>>` and just does the result-trick explained above. This allows for usage as seen in the added test.
Add a test for failure