Don't assume unknown files are text/plain mimetype

Instead, return application/octet-stream and use a new utility
function DesktopService.GetFileIsText to guess by scanning the first
8k of the file for NUL bytes.