Remote file updates for CHEF-869, 1031, 1367, 1716, 2506, 3786, 3856, 3859

CHEF-869 - Cache response headers for remote_file and submit conditional GET on next request
CHEF-1031 - remote file resource should handle ftp urls
CHEF-1367 - Make remote_file avoid downloading a file if it hasn't changed
CHEF-1716 - add local file copy
CHEF-2506 - remote_file should respect ETags
CHEF-3786 - remote_file: support authenticated HTTP/HTTPS requests
CHEF-3856 - Remote file provider mutates the resource
CHEF-3859 - remote file resource fails ungracefully when no source is set