Move platform-specific code into separate modules
Extract temporary project creation into testing module
Test Builder in a platform-agnostic way
Move Python tests to their own test file
Add TODO for PIP_DOWNLOAD_CACHE
Tighten up a couple of console tests
Test that description is written to console
Use shell strings rather than non-shell arg lists
Print command before execution
Don't print commands if quiet is True
Extract a couple of console functions