Constrained multi-object auctions and b-matching