functional tests for Snapshot Job Processor

grouped tests under following classes,
- TestSnapshotProcessorJobProcessing
- TestSnapshotProcessorPolling
- TestSnapshotProcessorRetentionProcessing
- TestSnapshotProcessorNotifications
- TestSnapshotProcessorImageName

Co-authored-by: Sridevi Koushik <sridevi.koushik@rackspace.com>
Merge pull request #297 from venkateshsampath/test_job_processor

Functional Tests for Snapshot Job Processor
fix snapshot.get_image_status logic

- the snapshot.get_image_status method is used for two purposes.
1. to determine if a new image for the job needs to be created.
2. poll to check if the snapshot image is successfully created and
uploaded.
- extracted the logic that determine if new image needs to be created
  (_get_image_id).
- extracted the logic that polls for the image status.
- on exception, in both cases, update the job status to ERROR with next timeout
- wrap and re-raise the original exception as PollingException
- removed the assumption of image may be KILLED on exception.
- this fix also addresses one of the bug related to creation of
  duplicate scheduled images.