Make Spree::Shipment#ship! asynchronous.

By making the call to `ship!` asynchronous, delayed job takes over and will keep retrying even if it fails initially. 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 such as AVG).

The tests all pass, but this needs to be reviewed and discussed before merging.

Related to degica/basecamp2#42 and degica/extinguisher#33.