Handle various deployment problems

Detect and handle these problems:
 * User is trying to deploy the extension over a local file, but forgot to grant file permissions
 * When trying to deploy on an HTML document over the file:/// protocol
 * When trying to deploy on a PDF file, withouth PDF.js

Fixes #1650 and #1663.
This method is getting long and theres plenty of duplication, lets extract it out into several smaller methods.