Make IO.x fail with typed exceptions

This breaks some tests, but it feels right to have checks on non-existing
paths fail.  But perhaps not right enough for TimToady.  So please revert this
patch if it is too late to be breaking behaviour like this away from Perl 5.