Fix to invalidate previously entered payments. Fixes #2687 and #2822

This addresses issues https://github.com/spree/spree/issues/2687 and https://github.com/spree/spree/issues/2822

This pull adds an on_create callback to Spree::Payment so that the newly created payment invalidates the previous payments. This fixes the Edit Payment functionality and no longer queues up multiple payments in the :checkout state leading to incorrect credit cards being charged and multiple payments being left in the :checkout state after order is complete.

This implementation avoids the recursion and self-invalidation issues present in pull request https://github.com/spree/spree/pull/2722