provide `with-cause` to allow specifying the cause explicitly, addresses issue #29

previously the cause was automatically captured within a try+ catch
clause or nil otherwise.

This could also be accomplished by allowing more flexibility in the
throw+ arguments, but that's quite a bit more complicated to code.