Refactor and simplify fetchers

This is a rather large commit, but here was no easy way to split it up
into smaller pieces. This commit refactors fetchers to use the abstract
Fetcher class and adds more documentation and consistency to the
fetcher methods.
Remove libyaml-windows that snuck in
Use the be_a_file and be_a_directory matchers everywhere
Extract File syncing into its own module and helper functions
Make windows_safe_path a Util method again
Move the Digestable requirement to Fetcher
Fake a less-flakey git fetcher spec
Remove unused path helper methods
Clean up integration packager tests
Fix failing publisher spec for Dir globbing changes
Fix failing digestable spec for Dir globbing changes
project_file, not downloaded_file
Fix failing PathFetcher spec for Dir globbing changes
Fix failing Packager::Base spec for Dir globbing changes
Update new checksum values
Fetch software before cleaning in specs
Add specs for FileSyncer
Really add the zlib source
Use UTC times
Always sort directory entries

Prior to this commit, SHASUMS would **change** if the order of the items in the
directory changed.