Fix AssumeRole functionality on windows

On windows, the `:` char is not allowed in the filename, so we replace these with an `_` char.
Also, for POSIX systems, the file is created with `0600` permissions to restrict access to the cache files.

cc @kyleknap @danielgtaylor