Fix filename for private files and special chars

This fixes two problems:
- The signed url for private files can contain slashes, which broke the
  previous code
- The filename can contain url encoded characters if a non-default
  sanitization regex is used

Fix taken from fog file class in carrierwave master.
Merge pull request #27 from felixbuenemann/fix-filename-for-private-files

Fix filename for private files and special chars
Fix File#exists? to actually check for existence

The current code is a no-op, because you can read back any key from the
bucket object.