payment: validate invoice balance early

Make sure we don't fail a payment before making sure there is something to pay.
This fixes payment error events associated with $0 invoices for accounts without
a default payment method.

* Fix test in beatrix which was now expecting an extra payment error event
* In PaymentProcessor, we need to handle external payment methods separately, to
avoid a potential deadlock

Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>