Use custom tempfile to avoid ruby 1.8-related test failures

Tempfile in ruby 1.8.7 calls `File.exist?()`, which we set a stub on.
For reasons that are not clear, this does not consistently fail. In any
case, using a custom temporary file implementation resolves the issue.
Make sure --concurrency 1 works while uploading multiple cookbooks.
Merge pull request #1246 from opscode/CHEF-4747-fix

Make sure --concurrency 1 works while uploading multiple cookbooks.
Delegate sync_cookbooks to policy_builder, subclasses rely on it
update with note re: version
Close before unlink because windows
Update file providers to close before unlinking.

This is required on windows, but the Tempfile implementation hides this
and silently ignores the error, meaning that we're leaving tempfiles
around on windows after we thought we'd cleaned them up. Eventually GC
would get to them, but this won't happen if there is a severe crash or
something calls `Kernel.exit!`, so we prefer to clean up manually.
[CHEF-3506] suppress final node save when using override run list
Merge branch 'CHEF-3506'

Related:
https://tickets.opscode.com/browse/CHEF-3506
https://tickets.opscode.com/browse/CHEF-3964
Expose resource creation via more static methods
Better specify what happens for NoMethodErrors in the DSL