Determine if ACL mgmt follows symlinks by provider type.

- Prerequisite for CHEF-4312 fix.
- File access control defers to the provider to determine whether to use
link-following system calls or not (e.g., chmod vs. lchmod). File
provider and subclasses will use link-following calls (chmod), Link
provider uses calls that manage the symlink itself (e.g., lchmod).
Allow file resources to manage files via symlink

Fixes CHEF-4312 http://tickets.opscode.com/browse/CHEF-4312

Adds resource attribute `manage_symlink_source` to file resource and
descendents. When true, file resources will manage the source file
when a symlink exists at the destination path. When nil (default), the
source file is managed, but a warning is emitted. When false, symlinks
are not followed. In Chef 12, the default should be changed to false.
Add File.realpath backport for ruby 1.8

- Related to fix for CHEF-4312
Fix spec file loading annoyances

- Don't load all knife subcommands. Fixes error running tests on 1.8
  when you have 1.9-only plugins installed.
- Adjust spec file loading to use paths relative to spec/
Update tests to expect normalized filenames

- Relates to CHEF-4312
- Updates unit tests to expect "normalized" filenames where method arguments
  are now using File.realpath(path) instead of path; on *NIX these are the
  same, on Windows, \ gets converted to /.
Test manage_symlink_source w/ links to links

- Increases test coverage for CHEF-4312 patch.
- Adds explicit coverage for managing symlink->[symlink ...]->file. It
  was previously determined that `File.realpath` handles this case, but
  this adds an explict test in case behavior is inconsistent across
  platform/ruby version/etc.
Merge branch 'CHEF-4312'

Fixes CHEF-4312: http://tickets.opscode.com/browse/CHEF-4312