Fix test failure on Mac

Previously cargo_compile_with_invalid_code failed on Mac OS X 10.9 because $TMPDIR was a child of a symlinked directory. As a result this the error messages from rustc used the real path while the test created the expected output using the symlink. This patch normalizes the root path used by the tests to use the real path.

The solution to this isn't as elegant as I'd like. Because fs::realpath isn't implemented in libstd (mozilla/rust #11857) I had to copy the implementation from librustc to avoid having to link librustc into the test binary.

This depends on #14.