Associate default user address in pre-transition callback

Two advantages:

  1. Centralizes this logic, as we want this to happen whether you create an order from frontend, backend or API.
  2. Waits until the last possible moment to assign an address and will thus get the most recent default address, rather than the one at the time the cart was created.

This is as an alternative to [#4789](https://github.com/spree/spree/pull/4789) and based off the IRC discussion with @JDutil, @athal7 and @huoxito. cc/ @nhippenmeyer
@JDutil That doesn't work, unfortunately. Otherwise, the callback associates an empty and thus invalid address in lots of unwanted situations. That causes half the test suite to go red. Also, this here is really view logic. It's saying hey, if there is no address there, we need to create an empty one so that the form fields even display. That's not something we need or want on the API side, say.