Improve Windows packaging experience

Previously, when the DownloadCache was used on a Windows machine, it
could not read and write files properly.  This was due to it using the
default system encoding which differed from the expected UTF-8.  This
change updates the DownloadCache to always read and write files as
binary in order to get around the encoding issue.

Previously, when files were cached by the DownloadCache, the file
names were escaped to ensure that there were no forward slashes in
them.  On Windows, this escaping is not sufficient, as colons must be
escaped as well.  This change updates the escaping to cover this
additional case.

[#71925232][resolves #53]
Merge 71925232-windows-packaging-improvements to master

[Completes #71925232]
Immutable CachedFiles

Previously, the CachedFile always behaved as if it was mutable, even
in situations where it was working against an immutable cache.  This
resulted in situations where a combination of intermittent network
connections and read-only file systems would cause an attempted
direction creation that would fail.  This change enhances the
CacheFile such that it can behave in both a mutable and immutable
fashion.

[#71928434][#54]
Merge 71928434-mkdir-immutable-cache to master

[Completes #71928434]