Added exception handling

@isupeene Added exception handling with 1 retry. Realized while doing this that the retry may not help. If problem still exists after retries then the exception is bubbled up via the WrappedError class.
Will the code in retry_n_times not raise a WrappedError exception that will show up in join that is called in run_parallel? I believe this is the case and that abort_on_exception does not need to be set on each thread for this to happen.