Adds additional details to alarm notifications

Previously, the alarm notification contained only a stringified
reason. This change adds a JSON formatted reason why the alarm changed its
state to the notification.

New notification:
{
  "alarm_id": "0ca2845e-c142-4d4b-a346-e495553628ce",
  "current": "alarm",
  "previous": "ok",
  "reason": "Transition to alarm due to 1 samples outside threshold, most recent: 99.4"
  "reason_data": {
    "type": "threshold",
    "disposition": "outside",
    "count": 1,
    "most_recent": 99.4
  }
}

It also improves the reporting of OR-combination alarms. Previously the
reason said something like "At least one alarm in xx,yy,zz in state alarm".
Now only the offending alarms are listed.

Change-Id: I258c7bfc0c093c07e518418fea1bb1f044fe98eb
Implements: blueprint alarm-notification-details
Merge "Adds additional details to alarm notifications"
Remove start index 0 in range()

Remove the useless arg ("start index" = 0) in files, since its default
value is 0, to make code cleaner.

Change-Id: I7cc2127b35df47624f9b4d2045b506e7f56fb7a0