make exceptions nicer

add the original exception to cause.

python 3 supports chaining natively, 2 requires this