Add migration to ensure shipping method categories are unique

Related to #4102
Remove duplicate join record creation

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

Related to #4102
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 #4102