Restore visual diff to original behavior

This restores the following corner case:

When there is a difference, but it's only about
the case of the characters, don't want to show
the visual diff by default, but we offer the
feature to the user.

I also updated the tests the reflect the specs.
Improve visual diff tests

Now there are separate test cases for:
 - A single target with no diff
 - A single target with some diff
 - A single target with some diff, which is case only
 - Multiple targets, some with diffs
 - Multiple targets, some with diffs, but only in case

Furthermore, the used sample diff strings actually look like
real diff strings, for better readibility.

Also, removed some useless lines from the code.

(Thx @aron for all the suggestions.)
Simplify visual diff code

Remove the unnecessary per-target hasDiff flag.

Extract the code for calculating the hasDiff/showDiff flags
into a separate method.
Make the diffFromTargets method private
Simplify visual diff flag calculation

... by using ES5 sweetness.
Merge pull request #1717 from hypothesis/1238-restore-diff-behavior

Restore visual diff to original behaviour.