introduce PrintableError
use PrintableError for bad rule and modules names
user PrintableError in parser.py
use PrintableError in do_build()
print errors in red
use PrintableError for import merge conflicts
handle remote module imports with merge_import_trees

Previously we were using apply_imports() to assemble our remote modules,
which actually dumps imported files to the filesystem, and then we were
reading them back in as a tree. Now we skip the filesystem and have git
just merge the trees directly, just like we always did to merge import
trees with one another. This might be faster, but more importantly it
should make conflict error messages more consistent.
catch DirtyWorkingCopyError and make a PrintableError
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
make LocalModule take a path argument
add override.py
return export path from Rule.do_build()
handle overrides in Resolver
create the override command
test the override command
ignore .swp files
merge branch 'master' of https://github.com/olson-sean-k/peru
replace subprocess.DEVNULL with None