Refactor git helpers

A redo of #64.

Notes:
* The only functions that now change the branch are checkout_branch, checkout_main_branch, and create_feature_branch. Every other command ends on the branch it starts.
* Normalized the commands so each now has the same first steps of stash_changes and sync_main_branch. Made the first 3 steps in the README match exactly as well.

For the coming refactors:
* For #63: Add `push_branch` into `sync_main_branch`
* For #61: Add `merge_branch $main_branch_name` into `git ship` after `pull_branch`
* For #45: Change feature branch checks to include non-feature-branches
We shouldn't ship if there are uncommitted changes. Too often that indicates uncommitted things that the developer thinks are in. I much rather error out in this case.