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)?
That's not quite right. If you have two branches "abcdef" and "abc" and you remove "abc", you'll be left with "def". Hence the regex anchors.

Actually, there's one more tiny improvement I added:
`join_string "$(echo "$split" | sed "s/^${string_to_remove}$//;/^$/d")" "$delimiter"`

Let's see if travis complains about this. I'm not sure this can be represented purely with the bash replacement syntax.