Remove Spree::OrderObserver.

It's not clear why this observer was necessary, since there is already
an observer on payment which should run after_finalize.
Make Spree::Shipment#ship! asynchronous.

By making the call to ship! asynchronous, delayed job takes over and
will keep retrying even if it fails. This is important for handling
cases where (for whatever reason) we have no more license keys or we
cannot get more keys at the moment (e.g. a timeout error from an
external API).

The tests all pass, but this needs to be reviewed and discussed before
merging.

[#74825166]