Raise error if not enough host allocation candidates
Raise error if not enough host allocation candidates

The allocation_candidates function is used on lease create and update
to get a list of allocations to send to usage enforcement. However,
in the case of physical hosts, if not enough candidates existed,
no error would be raised at this point, leading to the entire transaction
of a lease create/update failing halfway through, but critically after
already sending the information to the enforcement service, which never
gets notified that the lease failed to create/update.

Allocations should be checked _before_ sending to the enforcment service
to make sure that there are enough in the system to satisfy the request.

This updates the allocation_candidates function to do just that. It does not
update the _matching_hosts helper function, as that is used elsewhere
and is assumed to not throw an exception, letting the caller decide what
to do based on the number of host_ids it returns.

Change-Id: I41bb74e6201bf6e74b3113f7ad88037fd4dea676

ChameleonCloud/blazar,ChameleonCloud/blazar