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