Handle running benchmarks in "existing" environment

This is a follow on to #123, but gets carried away a bit with how this really should be architected.

It essentially does the following:

- supports "existing environments" by specifying a path to a Python interpreter to the `run` and `profiling` commands
- adds a "dev" subcommand, which is a shortcut to "run" with a number of the flags that are handy for development switched on
- fixes a bug where the repo remote would be updated in some unnecessary cases