CHEF-3960 Symlinks to directories should be swingable

Currently if a symlink exists to a directory and a recipe attempts to swing it to a new directory there is an error on Windows.  Desired behavior is an error for swinging from a directory to a file, but not from a directory to a directory.

I tested this by creating two directories, A and AA, then running the following recipes using chef-apply on both windows:

    link 'C:\dev\Temp\B' do
      to 'C:\dev\Temp\A'
      link_type :symbolic
    end

    link 'C:\dev\Temp\B' do
      to 'C:\dev\Temp\AA'
      link_type :symbolic
    end

I also added a functional test and ran that from the windows VM as well as locally.

I don't like where the change is.  It'd be cleaner to have it in lib/chef/provider/file.rb, however the dir -> file case would still have to be special cased in link.rb negating a lot of the advantage and the code would have to exist in the windows specific file handler as well.  It's also throwing permission errors when I try and move the code into file.rb for reasons I don't understand.  I'm also worried by the comment in file.rb/unlink that directories can not be unlinked.  Testing didn't reveal any issues with calling ::Dir.unlink, but it may be a corner case on an OS I didn't test.

@opscode/client-eng
Still extremely confusing from a Unix background.  Something more like "On windows, to fix a symlink already pointing at a directory we must first ::Dir.unlink the symlink (not the directory), while if we have a symlink pointing at file we must use ::File.unlink on the symlink"

This avoids all the target_file/to file confusion in terminology, addresses that this is windows only, avoids talking about 'swinging' which confuses the issue I think.