Migration to add many missing db indexes.

I noticed when doing some promotions testing that `code` in the `spree_promotions` table was not indexed. This causes a full table scan in a number of circumstances related to promotions. JDutil noticed this as well at some point, and added a bunch of indexes. Now I'm stealing his work, and taking some credit for it!
@gmacdougall we don't currently have this table in our 2.2 fork so that's causing the tests to fail, otherwise :+1: