Make best-promotion query more deterministic

Mostly for the benefit of the specs under MySQL.

This query was generating some sporadic spec failures for me when using MySQL as the database. This is because MySQL does not store fractional seconds so the "created_at" was sometimes the same value for two adjustments when running specs. And when created_at is identical the query below would actually pick the earlier adjustment instead of the more recent one.  Adding "id" as a fallback ordering fixes this problem and makes the behavior more deterministic.

The issue is reproduceable in postgres as well by using Timecop.
isn't this spec doing too much? didn't get why it's calling `choose_best_promotion_adjustment` when we want to test `best_promotion_adjustment`. I think it could look more something like this (I couldnt make this fail on postgres though):

```ruby
it "should choose the most recent promotion adjustment when amounts are equal" do
  # Using Timecop is a regression test
  Timecop.freeze do
    line_item.adjustments.create! label: "A", eligible: true, amount: 1, source_type: 'Spree::PromotionAction'
    line_item.adjustments.create! label: "B", eligible: true, amount: 1, source_type: 'Spree::PromotionAction'
  end

  expect(subject.best_promotion_adjustment.label).to eq "B"
end
```

what you think @jordan-brough ? sorry asking so much but I believe spree core build got to point where we need to be careful when writing the specs to not interact with the db more than we need