Change the way the best view intent is determined

First we try the original MIME type unless it's application/octet-stream.
Then we try the MIME type inferred from the attachment's file extension.
Then we fall back to application/octet-stream.

In all cases we first try the content:// URI, then a file:// URI.
Don't use dummy file path when resolving intents
Add unit tests for FileHelper.sanitizeFilename()