ChargeCustomerWorker is hard to follow and not DRY. Refactor #20

I've split `ChargeCustomerWorker#run_charge(charge)` into multiple private methods and then I've extracted those methods into service objects. I've noticed that there aren't currently any other SO (although I guess actions are used similar). I've also DRY-ed up `CreateCustomerTokenWorker` a little - I already had `ErrorService` so it made sense to use it there as well.

You are right! I am usually not testing service objects working with external services (I let integration tests to take care of that), but in this case there should be a test.