git-review: add submit command

- add submit command. Fixes golang/go#9297.
- detect GitHub clones during git mail. Fixes golang/go#9266.

- expand api.go to be able to make authenticated Gerrit API calls.
- remove subcommand shorthands, since people don't invoke git-review directly.
  the original functionality would now be implemented as short git aliases.
- check for unstaged changes during sync + suggest stash.
  (git pull -r is going to whine anyway, might as well give a nicer error.)

- add testing hooks to capture death, stdout, stderr.
- add fake gerrit server for testing.
- add mail tests.
- add sync tests.
- add submit tests.
- fix change test.

Change-Id: I92a0113dca255c4205890776e2ceec6a1211606a
Reviewed-on: https://go-review.googlesource.com/1518
Reviewed-by: Andrew Gerrand <adg@golang.org>