Parse `git rev-list`-style options

With this series, we support (parts of) the interface for specifying revisions that Git users are familiar with from `git rev-list`, `git log`, and other Git commands.  This is useful for creating out-of-core command-line programs that browse a Git repo (like `tig`), and may be useful for an `advanced search` interface in GUI or web applications.

In this version, we parse all the options we can support with the existing logic in revwalk: basic include/exclude commits, and the ordering flags.  More logic will be required to support `--grep`, `--author`, the pickaxe `-S`, etc.

Also included is a simple driver program that can be used like `git rev-list`.