Ckozak/better autobind

Basically, this updates the pool priority function to check each number attribute (sockets/vcpus/cores/ram)
priority += Math.max(0, 10-(ATTR_OVERCONSUMPTION)-((REQUIRED_QUANTITY-1)/2))

so given a 4 socket consumer, and a stack of 2 socket subs, and a stack of 6 socket subs, priority would be
2 socket sub:
10-0-(2-1)/2 = 9.5
6 socket sub:
10-2-0/2 = 8

so 2* 2 socket subs are preferable.

We use this for preference within a single stack, as well as the average priority of pools in an entitlement group in order to pick the best group.

In order to use this metric to compare groups before we choose the best ones, we must prune groups before we pick the best, which is slightly more computation, however in most cases there is no extra work done because we can disregard all groups that don't provide installed products or complete partial stacks.