FilesystemCache sanitizes filenames before writing

Using the provided filename as the prefix for tempnam() lead to not being able to write the cache file if the filename had illegal characters. Characters other than letters, numbers, dashes, underscores, and full stops are now replaced with a dash.
Hi Ocramius. Thanks for the reply. Am I right in thinking that because `$sanitizedFilename` is only used as the input to `tempnam()`, even if there is a collision between two filenames, a unique temporary file will still be created?

For example, here 2 separate filenames are created when calling `tempnam()` twice with the same prefix:

```
c:\www>php -r "var_dump(tempnam('', 'aaaaaa')); var_dump(tempnam('', 'aaaaaa'));"
string(42) "C:\Users\PX\AppData\Local\Temp\aaa2629.tmp"
string(42) "C:\Users\PX\AppData\Local\Temp\aaa262A.tmp"
```

This may not necessarily be the correct approach however as I'm still as confused as ever about the reason why my example prefix isn't working. My test cases are as follows:

* If I prepend the whole thing with an underscore, it works.
* I can write a temporary file with a prefix of `[nodes` for example, so it's not related to the first character of the filename.
* If I truncate the failing prefix to 64 characters but leave it otherwise unchanged, `tempnam()` succeeds.
* However it's not necessarily a combination of a string > 64 chars length and a special character because `[123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890` is a valid prefix.

Maybe I'm hitting a bug in PHP. I'm using XAMPP with PHP 5.5.11 and have also got the same result using XAMPP with PHP 5.5.9.