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.

This looks extra indented.  (We don't usually do extra indentation for things under <code>private</code>)