Merge pull request #2 from alphagov/refactor_pair_with_kush

Initial commit w/Kush pair refactor.
Replace flag with jwaldrip/odin

This allows us to create more structured commands and reduce confusion about
which arguments you have to pass when using zones, download or upload.

There is one "wart" in this, that the arguments are context-specific. So you
have to use `--dry-run` immediately after `upload` and not at the end of the
line. Per the comment in the README.

I've kept email and key as arguments, despite them being required, so that
we don't have a bewildering long list of positional arguments.
Catch unparsed arguments

To prevent the example in the README of `upload zone file.json --dry-run`
from silently ignoring the `--dry-run` flag and uploading changes anyway.

This might be addressed in future by the referenced issue.