Use joblib for multicore parallelization instead of custom multiprocessing/concurrent.futures implementation. Work on #37