add filter to is_purchasable() for variations

I didn't fully understand why each variation's `is_purchasable()` was determined by the parent product's `is_purchasable()` status. 

Anyway, I didn't want to set *all* the variations to purchasable if the parent product had 1 NYP variation. It seemed to make more sense to have control over each variation individually, so I added a filter.