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 
Instead of checking whether ther directory is non-empty, I think you can just `rmdir` it – this works only on empty directories according to the docs. This would remove the unnecessary allocation.