Add .cancel() to remove listeners early

closes #2