fix multiprocessing interrupt bug

Use knockout pool in a context manager. This means that even if the
program crashes (or control C is used to interrupt), the worker
processes can be properly terminated. This was causing problems when
interrupting the kernel in the IPython notebook.
speed up gene deletion computions

Does not need to compile regular expressions in a for loop.
update documentation for deletions

formatted as an IPython notebook
Merge pull request #103 from aebrahim/double_deletion_bugfixes

Double deletion bugfixes