Simplify the ProcessBuilder struct

This changes many bounds to ToCStr to stay in line with the since-introduced
Command structure. The builder remains separate of command to have control over
executing and Show.

Path-related methods have been removed and env-initialization/management are
left to Command, ProcessBuilder only keeps track of the delta.
Move git macros to using `arg()`
Use Path::display().to_string() less often

Unfortunately this cannot yet have a test for it as rustc itself does not work
if it is run on non-utf8 paths.
remove deprecated lexical_ordering() usage
auto merge of #237 : cburgdorf/cargo/fix_deprecation_warning, r=alexcrichton
Correct a typo in layout preparation

If a build was canceled halfway-through, this would lead to problems when the
project was rebuilt again.
Add a test for closed issue #111

This was fixed when rustc properly added extra-filename to all temp outputs as
opposed to just libraries.

Closes #111
auto merge of #238 : alexcrichton/cargo/cstr-builder, r=wycats

At the same time, remove a bunch of `path.display().to_string()` and friends.
auto merge of #241 : alexcrichton/cargo/fix, r=wycats

If a build was canceled halfway-through, this would lead to problems when the
project was rebuilt again.
auto merge of #242 : alexcrichton/cargo/issue-111, r=wycats

This was fixed when rustc properly added extra-filename to all temp outputs as
opposed to just libraries.

Closes #111
Use a hash for -C metadata instead of a string

This ends up serving the same purpose, but a critical change is that it
canonicalizes the relevant git url (if one is used) to ensure that the same
package from two slightly different locations is always built the same way.

Sadly I'm not quite sure how to add a test for this as it involves using remote
git urls which are unusable during tests.
Fix travis builds