Make commands in project.json case-insensitive
Refactor command-line parser

1. Add CommandOptionType in CommandLineApplication parser
2. One option can have multiple values in CommandLineApplication now
3. Add helper methods that generate help information in
CommandLineApplication
4. Replace all usages of CommandLineParser with CommandLineApplication
parser
Add support for help options of subcommands

1. Merge CommandLineApplication and CommandInfo into one class to allow a
more consistent recursive processing
2. Help options are treated specially because they are different from
common options (help options invoke actions)
3. Show help information when find invalid options/subcommands
Small improvements

1. Help command is added automatically when an app has some commands
2. Recursive parsing overkills. Change back to iterative parsing.
Small improvements

1. Show short hint rather than full help if find invalid options or args
2. Add symbol option to merge all three help options