Enhance the schedule process of evacuate

Instead of trying each host node and catch the error, this patch
provides a function to get an available host and following below
checking rules:

1. Check if the host is alive
2. Check the vcpu and memory (act as scheduler)
3. Check the server group info (affinity/anti-affinity policies)