Add migration to ensure shipping method categories are unique

Related to #4103
Remove duplicate join record creation

Related to #4103
Refactor shipping method creation to use a single method call

Related to #4103
Change package to return common shipping methods

* The previous code would return shipping methods that only applied
  to one of the shipping categories in the package. IMHO the more
  correct approach is to return only the shipping methods that are
  common between all the shipping categories.
* The #to_a at the end handles the case where the shipping
  categories are empty, so that an empty Array is returned rather
  than nil.

Related to #4103
Fix failing package specs in master branch

* This fixes two specs that fail due to changes in the master
  branch. One change exposes a bug in the original specs, since they
  refer to a single variant, yet variant1, variant2 and variant3
  are defined and ignored.

Related to #4103