Fix updating alarm can specify existing alarm name

when creating an alarm, we cannot specify an existing name of the
project. but when updating an alarm, we can specify an existing name.

Change-Id: Ia24347ee647e7755b50d0d5d2ff033f4c5cbeb19
Closes-bug: #1288155
spawn multiple workers in services

the collector service only ever grabs one connection to the
database at a time. this causes a massive backlog on the message
queue. enable ability to spawn multiple workers for notification
and collector services.

Change-Id: Ie85c4a6eace52c771c3eb8425839d253f8dd74cd
Closes-Bug: #1291054
Avoid swallowing AssertionError in test skipping logic

The logic designed to skip testcases when NotImplementedError
is raised by a storage driver can inadvertantly swallow a
failed assertion if the string representation happens to
include 'not implemented'.

Change-Id: I1c9e617a5dcb545941d92ed7a0d7cc702c407506
fix create_or_update logic to avoid rollbacks

check if entry exists rather than blindly adding entries to table.
this will avoid unnecessary rollback overhead.

Closes-Bug: #1295504
Change-Id: I923cc35ed4c9155ffa04ac189555cdbcb38bcbcf
Ensure idempotency of cardinality reduction in mongo

Fixes bug 1297004

Previously, the reduce function for the cardinality aggregate was not
idempotent with respect to partially-reduced values.  This led to the
cardinality value being inaccuarate when the size of the mapped set
caused mongo to call reduce in multiple stages.

Now, the reduce function respects the implicit idempotency requirement.

Change-Id: Ia1e5f8dad43a9afbba8bace610e0d6574fb579cc
Merge "Avoid swallowing AssertionError in test skipping logic"
Merge "Ensure idempotency of cardinality reduction in mongo"
Merge "spawn multiple workers in services"
Merge "fix create_or_update logic to avoid rollbacks"
Merge "Fix updating alarm can specify existing alarm name"