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