Fix all tests on windows

This brings cargo up to date in all aspects with respect to windows.

The commits have all the nitty-gritty details. There were two assumptions which ended up having far reaching impact:

1. `file://` urls could be used for local git repos. This was too difficult with `\` characters in filenames.
2. Spawning processes with relative paths ended up in a world of pain. See https://github.com/rust-lang/rust/issues/15149 for details.

Closes #32