Refactor command-line parser

- Add CommandOptionType in CommandLineApplication parser
- One option can have multiple values in CommandLineApplication now
- Add helper methods that generate help information in
CommandLineApplication
- Replace all usages of CommandLineParser with CommandLineApplication
parser
- Merge CommandLineApplication and CommandInfo into one class to allow a
more consistent processing
- Help options are treated specially because they are different from
common options (help options invoke actions)
- Help command is added automatically when an app has some commands
- Show short hint rather than full help if find invalid options or args
- Add symbol option to merge all three help options