Refactor command-line parser and add version flag to k, klr and kpm

Another approach to add version flags. @davidfowl , please help to compare it with the approach in #307 
Since we don't have a `Main`/`Program` class as an entry point in this shared project, I chose the `RuntimeBootstrapper`. Not sure why it might be broken on mono. Please let me know the result after you verify it.