Make fs::rename on windows obey Unix rename semantics. #1583

On Unix rename fails if the target directory exists *and contains
other files*. For consistency, emulate that behavior on Windows.

cc @alexcrichton 
In general I try to move these workarounds to only happen in the error case of `fs_rename`, that way the "fast path" avoids the extra syscall to stat/readdir/etc.