add MapperContext

handles generating a multiprocessing.Pool and closing it when done
use MapperContext where possible