Better DataLoader error handling

- DataLoader.fail can take any object
- ResourceLoader doesn't strip error context