Use opaque focus highlights and tweak the rules

It may or may not be possible to change, but the way the current
highlighter slices the DOM when highlights overlap doesn't always
produce a structure where segments of larger highlights nest outside
segments of highlights that are entirely within their bounds. For
instance, structures like this may result:

    Spans boundaries:       [   ][[ ]][   ]
    Associated annotation:  A   ABA ABA   A

In this example, the range of A completely spans the range of B yet the
inner-most A span is completely wrapped by the B span, with no A span
wrapping them both. If A is the highlight with focus, it is not the
case that a CSS rule can simply neutralize the background color of B.
Therefore, the background color of the inner A span blends with the
background color of B, making the focus highlight less prominent than
it should be.

In this situation, the focus highlight can be guaranteed to be shown
in a clearly visible color by making it opaque. There may be colors
on which this is too low contrast, but until we can investigate other
options this PR makes the focus highlight color opaque to address this
issue.

Additionally, factor out a highlight mixin that makes it all a bit
more readable and consistent.

Fix #1766
Fix #1816
Merge pull request #1824 from hypothesis/highlight-mixin-and-opaque-focus

Use opaque focus highlights and tweak the rules.
Remove selection overrides

Having the browser text selection behaviour change when it moves over
a highlight is extremely confusing. This change removes that behaviour,
the highlight mixin and brings the PDFjs override file inline with
common.css
Add years to reply template timestamps

When the timestamp is from a previous year.
Replace "you" with the users username

In the reply email notifications
Fix display text for notification toggles
Merge pull request #1829 from hypothesis/1787-email-notification-revisions

Email notification revisions
Merge pull request #1827 from hypothesis/remove-selection-overrides

Remove selection overrides
Remove unused CSS for search highlights
Improve Elasticsearch initialization

Improve the way that Elasticsearch is initailized in a couple ways:

- Take the analysis settings from the classes the same way that the
  mappings are taken.

- Merge mappings and analysis into the initial index creation. This
  avoids the need to close and re-open the index for the initial
  analysis settings configuration.

- Re-open the index in a finally clause, to ensure that it is never
  left closed when performing analysis settings updates.

- Detect index already exists error more robustly.
Suppress log messages when ES index exists
Merge pull request #1825 from hypothesis/improve-elasticsearch-create

Improve Elasticsearch initialization
Remove negative margin on thread reply counts

Instead of using a negative margin to pull the reply count up in line
with the annotation actions, drop the clearfix on the annotation itself
so that the actions don't take up vertical layout space. Restore the
assurance that the actions and reply count don't get too close to the
card edge by putting the clearfix on the thread instead. Also, ensure
consistent use of the annotation-section class to get regular padding
rhythm on the annotation sections.

Fix #1808
Newest pip manages its own cache
Remove conflicting class names from annotations

Section, header and footer should be distinct, instead we just use the
cascade in the stylesheet to override the margins.
Merge pull request #1831 from hypothesis/1808-fix-cc0-message-style-alt

Remove negative margin on thread reply counts.
Set the standalone conversation as the viewer root

Fix #1803
Remove extra margin on deleted elements

Now the thread is not using negative margins this isn't required.
Add the concept of a root to the thread directive

This special cases the threads that are styled as cards rather than
replies and allows them to be styled accordingly.