:auto mode for :file_staging_uses_destdir

The new option `:auto` for `:file_staging_uses_destdir` tries destdir when creating tempfiles first and falls back to tmpdir when unseccesful. 

/cc: @opscode/client-engineers 

Fixes https://github.com/opscode/chef/issues/2356.
I'm not sure what kind of mount related error you'd have that wasn't a SytemCallError of some sort or another.  But more importantly why do you care?  If the Tempfile fails on destdir, but succeeds on /tmp and then the mv/cp of the Tempfile to the destdir succeeds, then it works, and it doesn't really matter what the reason was for the failure to open the Tempfile on the destdir.  And if the Tempfile fails due to destdir being borked in some more fundamental way you'll find that out later when the cp/mv fails, and you'll get a perfectly correct + usable error message out of that later failure.  By being more restrictive you only create edge conditions where you could have succeeded but don't.  The cases where that doesn't apply are all the horrible exceptions that live outside the StandardError tree where the system is fundamentally out of memory or the ruby VM is borked and puking and you just need to stop.