decide if we're creating/unlinking up front
generate content up front
bypass idempotency in the cookbook_collection class

yo dawg, I put some idempotency in your idempotency because it heard you
really liked idempotency.

the file provider already handles this, the cookbook_collection does
not need to re-checksum the source to try to be idempotent, which is
what the last argument to the destination path does.  here we just want
to lookup a file in the cookbook cache and fetch it if necessary and
return the path into the cache.  the cookbook cache should not need
to know about where we're going to be deploying it.

as a side effect this avoids a second needless checksum.
CHEF-5081 functional test
add comment on magic behavior
some coderage cleanup

now i can sort of understand what manage_symlink_source actually does
and this reads correct to me.
validate checksums on downloads
small code rearrangement, avoid re-checksumming
different operating systems throw different errors
Merge pull request #1715 from opscode/lcg/file-provider-fixes

Lcg/file provider fixes