Summary:
Partially fixes https://github.com/pytorch/data/issues/969
### Changes
- Add `ExceptionWrapper` to attach traceback to the Exception
- Reason: traceback is unserializable. So, it has to be passed by string
- In order to provide informative Error message, pass name for each process like `dispatching process` and `worker process <id>`.
- Add tests to validate Error propagation from the dispatching process
- parametrize the tests
- Fix a bug for `round_robin_demux` to return a list of DataPipe rather than a single DataPipe when `num_of_instances` is 1.
Pull Request resolved: https://github.com/pytorch/data/pull/1036
Reviewed By: NivekT
Differential Revision: D43472709
Pulled By: ejguan
fbshipit-source-id: e5c9e581ca881f523fb568b6f46bf16ecfc243d2