Validate source on payment if payment method's requires a source

* Fixes a multitude of errors related to creating payments with no source in the checkout flow
I decided to just stub it here since in the test below (line 153) I wanted to test what the behavior would be like when you do provide a source with this particular payment method. I think the only alternative to this is flipping the boolean on the class and stubbing true on the other test (essentially the same), or creating a second bogus gateway with just that flag flipped, which seems a little heavy handed? If you take a look at the method its just return a straight boolean that can be overwritten by child classes

I could also group this test and the other one with contexts so its a little more clear that this one is "source not required" and the other one "is required"