Move out actual payment processing from payment_method #4451

Moved actual payment processing code out of payment_method to
_process_payment method. So that other modules can easily modify
the behavior of processing payment independently.