Allow choosing delivery method

Notes:
- I kept the `deliver_exception_payload` method around since we've previously told customers they can monkey patch this
- Probably needs better error handling, since I didn't think too much about how exceptions in delivery methods are propagated, or what happens if people pass in a bunk delivery method
- Completely undocumented :S
- Fix tests