CLOUDSTACK-6965: fixed the NullPointerException introduced by fix for cloudstack
6935 in AbstractStoragePoolAllocator#filter method for Zone Wide storage

(cherry picked from commit ef45f06f88c955dcf47f1fb69a3a0e87eb817e1d)
CLOUDSTACK-6968: Allowing cluster scope volumes to attach to any VM. If migration is
needed then first they will be migrated to appropriate cluster before attaching.

(cherry picked from commit e7ba46b5f7da21c4fc13dc3284aa802d177045f2)
CLOUDSTACK-6830: Fixed [hyper-v] during VM migration, volumes on zone wide primary
store requires storage migration resulting in failure of VM migration. This also
improves the hostsformigration api. Firstly we were trying to list all hosts and
then finding suitable storage pools for all volumes and then we were checking
whether vm migration requires storage migration to that host. Now the process is
updated. We are checking for only those volumes which are not in zone wide primary
store. We are verifying by comparing volumes->poolid->clusterid to host clusterid.
If it uses local or clusterids are different then verifying whether host has
suitable storage pools for the volume of the vm to be migrated too.

(cherry picked from commit 64153a43711420224655bfbe248b4b87474a1f23)

Conflicts:
	engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java