Fix parallel makefile builds

All the copying of files amongst one another was apparently causing something to
get corrupted. Instead of having files fly around, just update the directories
to link to.
Don't read forever on a file descriptor

Similarly to the recent commit to do this for networking, there's no reason that
a read on a file descriptor should continue reading until the entire buffer is
full. This makes sense when dealing with literal files, but when dealing with
things like stdin this doesn't make sense.
auto merge of #11355 : alexcrichton/rust/read-waits-forever, r=brson

All the fun is down below.