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