stop using flags in the plugin interface

When invoking a plugin, pass all fields first as plain alternative keys
and values. Terminate this list with a "--" argument. Then pass the
command name and positional parameters. For example:

  git_plugin.py url $url rev $rev -- fetch $dest $cache_path

This makes sense as we move towards adding a "reup" command. All plugin
invocations will pass in the entire set of fields, so we should put
those first. After all of those are consumed, the plugin can figure out
what to do with the command.
add support for a reup command in git_plugin.py
start edit_yaml.py

We want to be able to edit YAML files in place for the "reup" feature.
To do that, the first step is to get the start and end indices of a
given field. In this diff, we define an initial function that
recursively walks the list of YAML parse events and builds lists and
dictionaries out of them as appropriate, so we can find the tokens we're
looking for.
get_field_bounds

A first shot at finding the starting and ending indices for a given
field in a YAML file.