Cache snapshots in request for extension

The extended snapshots extension makes a separate db request for
snapshots which is horribly inefficent. In addition it causes an
issue when using all_tenants=1, because the second request doesn't
pass in the filter. Fix this by caching the snapshot in the request
object like we do for volumes and retrieve the cached object in the
extension.

Change-Id: Ia943438c8d48accb7f62c43f07642c3da2fe34ab
Resolves-bug: #1358960
(cherry picked from commit 4f0d1d36136bcb33f578b2999812f36cadd71cec)

Conflicts:
	cinder/api/contrib/extended_snapshot_attributes.py

Change-Id: Ia943438c8d48accb7f62c43f07642c3da2fe34ab