Design considerations:
- treats `--flag=VALUE` as equivalent of `--flag VALUE`
- treats `-abcVALUE` as equivalent to `-a -b -c VALUE`
- allows `--opt=false` as opposite of `--opt` or `--opt=true`
- retrieve values as string, slice of strings, bool, or int
The `create` and `remote` commands needs to infer the current project
name from the project's directory. Instead of using the current working
directory, which doesn't necessarily match the project's toplevel
directory, use `git rev-parse --show-toplevel` which also respects the
`-C` global flag setting.
Fixes#1105, closes#1114
Instead of displaying plain text help, `hub help <command>` will now
search for man pages to display.
* If `man` is available, hub first tries to locate the local
`../man/hub-<command>.1` file relative to the `hub` executable. If
found, open it with `man`. If not, execute `man 1 hub-<command>`.
* Otherwise, resort to displaying plain text help.
Introduce a `console` package which encapsulates logic of printing out
to console. This provides flexibility of discarding output in tests.
It also allows us to unify format of printing to console (if we want to).
This fixes#801.