Snapshot support
Logic on SolidFire side for CloudStack snapshots
Support for back-end snapshots on primary storage
Logic around granting and revoking access to the volume that backs the snapshot
Changed "boolean connectVolumeToHost(VolumeInfo, Host, DataStore)" to "boolean grantAccess(DataObject, Host, DataStore)"

Changed "void disconnectVolumeFromHost(VolumeInfo, Host, DataStore)" to "void revokeAccess(DataObject, Host, DataStore)"
Invoke grantAccess and revokeAccess one time each using a SnapshotInfo (where previously a VolumeInfo was being passed in)

Handle the case where a SnapshotInfo is passed into the grantAccess and revokeAccess methods
Improve error handling for a host-side error
Pass on new command
Save off the UUID of the VDI before detaching its SR
Reply that reverting is not supported
Reorganized the snapshot logic a bit
Commits related to taking snapshots that live on primary storage
CLOUDSTACK-7769 - Fixed test_ssvm.py script
CLOUDSTACK-7771: Throw exception while restoring vm if the template is already deleted. Also fix the usage event being generated from the right template id and fix the log message which sometime showed incorrect template id.
CLOUDSTACK-4201: listServiceOfferings API needs to be able to take virtualmachineid of SystemVM and return service offerings available for the vm to change service offering
when host is pingtimeout and CCP can not determine the host status, put the host to Alert status , no VM HA.
CS-21296: hidden snapshot.backup.rightafter, as it's not needed