Argument groups

This lets the option parser recognise *argument groups*, i.e. groups of arguments separated by `--` on the command line. This is useful when having to distinguish between ambiguous arguments.

This resolves #19.

For example, this won’t work:

```sh
$ git checkout HEAD
# fatal: ambiguous argument 'HEAD': both revision and filename
# Use '--' to separate paths from revisions, like this:
# 'git <command> [<revision>...] -- [<file>...]'
```

but these do:

```sh
$ git checkout HEAD --
$ git checkout -- HEAD
```