Finish implementing #98 (encapsulate configuration)

@charlierudolph @kevgo 

* Added ability to run `git town [...]` even before configuring git town.
  * Rationale - the user should be able to see the help text before being immediately prompted by the config prompts
* Added `git town main-branch [<branch_name>]` to view and edit the main branch
* Added `git town non-feature-branches [--add|--remove <branch_name>]` to view and modify non-feature branches

Couple issues:
* the linter on Travis seems to be different from the one I have. Everything passes locally, but Travis' wants me to fix [line 42 of shell_helpers.sh](https://github.com/Originate/git-town/compare/aw-finish-config?expand=1#diff-5fb3dd355b9b26c61663d7e067c373fbR42). Following their suggestion, the functionality seems to change and break.
* The `git town` "option parsing" seems messy -- any advice?
* Don't really like the differences between the flags and "subcommands", e.g. `git town main-branch` vs. `git town --config`. Would `git town config` be better than `git town --config` (per Kevin's original suggestion)?
Please create a function that encapsulates this logic. Please do the same with the non-feature branches.

```sh
function show_or_update_main_branch {
  local name=$1
  if [ -n "$name" ]; then
    store_main_branch_name_with_confirmation_text "$name"
  else
    show_main_branch
  fi
}
```

Hopefully we can keep the if/elsif/else as one line per statement

```sh
if [ "$1" == "--config" ]; then
  show_config
elif [ "$1" == "main-branch" ]; then
  show_or_update_main_branch "$2"
elif [ "$1" == "non-feature-branches" ]; then
  show_or_update_non_feature_branches "$2" "$3"
elif [ "$1" == "--version" ]; then
  show_version
elif [ -z "$1" ] || [ "$1" == "help" ]; then
  show_help
fi
```