use @annotations to map commands to functions in main

Also update the override interface to use subcommands properly.
stop suppressing GitRepo's stderr in tests
plugin.py -> plugin_client.py
initial version of plugin_shared, port git_plugin
port cp_plugin over to plugin_shared
hello world hg plugin
hg fetch working
hg_already_has_rev
clean up peru_plugin_main
hg reup
test hg plugin -- lots of duplication here
rsync_plugin.sh
create validate_third_party.sh and add it to .travis.yml

We would love to have peru fetch all of its own dependencies, but that
leads us to a bootstrapping problem: We can't run peru until it's
dependencies are present. To work around that, we define dependencies in
peru.yaml, and we also check them in. That means we could get into a
state where what's checked in doesn't match what's in peru.yaml, which
could cause all sorts of trouble.

To avoid that problem, create the validate_third_party.sh script. This
runs a fresh sync of our peru.yaml and compares the result to what we
have in the repo, to make sure they match. Run this as part of our
Travis tests. The expected workflow is that commits that change
peru.yaml should also commit the new third-party, or else they'll break
this test.

We're not including this in test.sh, because it's pretty slow if you
don't have PERU_PLUGINS_CACHE set to something persistent. Running it in
Travis should be enough.