Enable filter alarms by their type

Since type is a very important attribute for alarm object, it will be much
convenient to get alarms by certain type. This patch adds the 'alarm_type'
parameter to get_alarms interface to implement it.

End user can filter alarms by using 'type' filter.

NOTE: this patch changes the parameter 'type' to 'alarm_type' in
get_alarm_changes interface of storage module, to keep consistent with
get_alarm interface.

Change-Id: Ib81375028957490f3a114de7627bc4bcb20f3d77
Add new notifications types for volumes/snapshots

This change allows to collect and view notifications of different types -
volume/snapshot.(create | delete | update).(start | end) and
volume.(resize | attach | detach).(start | end).

Implements: blueprint add-new-notifications-types-for-volumes-and-snapshots
Change-Id: I592605bcea483d06f219a4d02d3a70a9fc0e27a3
transform samples only when transformers exist

the pipeline is oddly setup to loop through each sample and
attempt to transform it even when there are no transformers. this
is madness and should be stopped -- this patch does this.

at best, this should improve performance because of needless
looping, at worst, we get rid of misleading 'tranforming sample'
logs.

Change-Id: I80ba2b7775fda03670c7fa556ad5a779c6eefd27
Validate AdvEnum & return an InvalidInput on error

Raise a relevant exception of InvalidInput while validating if
the input to AdvEnum is not one of what is expected.

Closes-bug: #1320430
Change-Id: I48f014cc09e7d88e9b0f02fb8e9cf45772178b2c
Merge "transform samples only when transformers exist"
Merge "Validate AdvEnum & return an InvalidInput on error"
Merge "Add new notifications types for volumes/snapshots"
Merge "Enable filter alarms by their type"