A WeightTrader implementation that tries to buy weight using a single
currency. It tries all assets in payment and uses the first asset that can
cover the weight. This asset is then “locked in” - later calls to
buy_weight in the same xcm message only try the same asset.
This is because only a single asset can be refunded due to the return type
of refund_weight. This implementation assumes that WeightToFeeConverter
implements a linear function, i.e. fee(x) + fee(y) = fee(x+y).