Fix issue #5976 - HANDLE leaks and undefined/bad behavour
on windows.
Remove os::waitpid because:
 - The return value meant different things on different
   platforms (on windows, it was the exit code, on unix it was
   the status information returned from waitpid).
 - It was undocumented.
 - There also exists run::waitpid, which does much the same
   thing but has a more consistent return value and also some
   documentation.
Oops, the should_fail test needs to be ignored on windows.
Cleanup some mistakes made during rebasing/merging.
auto merge of #6010 : Dretch/rust/run-windows, r=brson

This fixes #5976.

It also removes `os::waitpid` in favour of (the existing) `run::waitpid`. I included this change because I figured it is kind of related.

r?