CHEF-1031: remote file resource should handle ftp urls

also resolves:
CHEF-3856 - Remote file provider mutates the resource
CHEF-3859 - remote file resource fails ungracefully when no source is set
CHEF-3786 - remote_file: support authenticated HTTP/HTTPS requests
CHEF-1716 - add local file copy
(partially) CHEF-3629 - setting underlying Chef::REST options for remote_file and http_request resource (specifically redirect_limit)