Fetch promo code by rule

Since coupon code are now a promotion rule rather than just a field in
spree_promotions table
Remove both code and timeframe fields in promo form

Those should be implemented as promotion rules now
Dont validate code presence if rule is a new record

This gives the user a chance to first associate the rule with a
promotion (via UI) and only then actually insert the coupon code and
save the record again
Include coupon code promotion rule partial in backend
Refactor previously CouponApplicator

By adding an error an success accessor instead of always returning a
hash. Improve test coverage. It still depend on some hacky way to ensure
the coupon code has been successfully applied but I believe we can clear
that our once we add an association between promotion and orders on the
database level