Branch naming logic

Implemented branch name generation. In order to properly test this,
I had to restructure the Checkout struct so that it could be mocked.
In doing so, I moved Checkout into its own package.

TEST=manual runs, run_tests.sh
BUG=chromium:980346

Change-Id: Ib7e5195c7f7a38a5796c1626ccf98f8a2fdcdb56
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/go/+/1691441
Reviewed-by: Jack Neus <jackneus@google.com>
Commit-Queue: Jack Neus <jackneus@google.com>
Tested-by: Jack Neus <jackneus@google.com>
10 files changed