sheriff-o-matic: Store annotations per-alert

As the failures that are part of a group can change over time there isn't a
stable key that can be used to index annotations. Instead, this change
propagates annotations to all of the alerts that relate to a group. Annotations
are merged before being displayed in the grouped UI.

For snooze time we consider the group to only be snoozed if all related alerts
are snoozed, and only until the earliest snooze time.

For linked bugs, this patch displays just one of the linked bugs. A subsequent
patch should modify the UI to display the union of all associated bugs.

The key by which annotations are indexed is currently in the form:
  "master::builder::build::step::reason"

As the key will soon be provided to the frontend when persisting annotations,
providing the key in the alerts feed (alerts[*].key) would simplify the client
further.

NOTRY=true
BUG=405322

Review URL: https://codereview.chromium.org/497433002

git-svn-id: svn://svn.chromium.org/blink/trunk@180872 bbb929c8-8fbe-4397-9dbb-9b2b20218538