add --quiet to reup
stop shelling out in test_integration.py

Instead, call directly into Main.run. This lets us catch the exceptions
that bubble up to the top of the process. We'll use this to test that
expected errors are throwing PrintableError instead showing a stacktrace
to the user.

To make this work, we need to have Main.run take argv and environ as
arguments, instead of just reading them as globals.
test the PrintableError for conflicting imports