File Refactor

This PR is to merge the epic work of refactoring File logic in chef.  For more information check out:

EPIC - File Refactor

or

http://tickets.opscode.com/browse/CHEF-3949

Note: Please don't push your commits directly into this branch. We will be working with PRs into this branch while we're getting through the review of this epic change.