Resurrect the removed visual diff support
Simplify/improve the visual diff

 * Move the calculations to the render funcion
 * Stop automatically `$sce.trust()`-ing the HTML code.
   (So now `$sanitize` is invoked automatically.)
   This also removes the need to use the `$sce` module,
   or to set the `trustedDIffHTML` flag, simplifying the code.
 * Use the `objectEquality` flag when `$watch()`ing the targets,
   so that we pick up changes in both the number and the contents
   of the targets
Stop overriding showDiff
Move showDiff from target level to annotation level.

Calculate the `showDiff` flag for the whole annotation,
instead of on a per-target basis.

Benefits:
 - One less variable stored inside the annotation model
 - We can more easily avoid unwanted overrides of the manually set value.
tabs -> spaces
Track diff per-target and set/unset showDiff
Avoid unnecessary annotation renders

The pattern of comparing the new value passed to a watcher with the old
value is idiomatic angular for avoiding the first digest. Instead, the
first digest is covered by the watch on the model reference identity.
After the initial rendering, the model will not change but the other
properties may, at which point re-rendering will occur.
Refactor to avoid renders and add tests

Rather than watching a bunch of subproperties, the most complex of
which are the targets, deep watch the whole annotation. The targets
were being deep watched already. This just seems much easier and
clearer than debouncing the render calls, and scales to whatever
properties much change in the future. We'll re-evaluate if this
becomes a bottleneck.
Digest upon store save confirmation
Add tests for annotation differences
Merge pull request #1709 from hypothesis/1238-restore-visual-diff

[WIP] Resurrect the removed visual diff support
Update timestamps of annotations upon render

Move the updateTimestamp function into the controller and call it
when render is called. If it is the first time, invoke it with a
flag that causes it to call itself, otherwise it will only update
once.
Add tests for annotation timestamp updates
Incorporate review feedback on annotation

- Fix a typo where a closure was unbound
- Always set target.hasDiff rather than having it be sometimes
  undefined and sometimes true.

Thanks @aron
Remove obsolete code

onSetTool calls setVisibleHighlights so this is no longer needed.
Skip a broken pylint checker
Chrome extension: Detect when access is denied

... during the deployment process, and redirect
the user to a page explaining the problem,
showing how to grant the "Allow access to file URIs"
permission to the extension.

Fixes #1663.
Warn on various deployment problems

... instead of failing silently.

 * When trying to deploy over the file:/// protocol
 * When trying to deploy over a PDF file, withouth PDF.js

Fixes #1650.
Use isAllowFileSchemeAccess
use triple equals for strict equality in JavaScript.