Fix reraise

I'm not totally clear on what reraise was supposed to do, but this PR
attempts to change it to just match the current Python 2.X `raise_`
statement. I added some tests to validate the behavior of reraise as
well.

I would advocate for you renaming `reraise` --> `raise_` and then
potentially adding a raise_with_traceback function like in pandas to
preserve that Python3.X compatible behavior.