[perl #117265] tests to cover behaviour handled incorrectly

and test $! is set properly
[perl #117265] tests the original patch passes

The original tests don't check that the file isn't actually modified,
so check that.
[perl #117265] re-work rurban's \0 in filenames patch

Changes in comparison to the original:

- ops that act on several files now return the correct value

- warning no longer on by default, but enabled by use
  warnings "io" (and hence by C< use warnings >

- extended the warning message to indicate which action caused
  the error.

- removed the check for kill, since that has always checked the
  full signal name.

- more tests

- add a check for -T/-B

- the tests now check the file isn't modified by chmod, unlink

- the tests now check $! is set correctly

Things I considered, but didn't do:

- making the warning different when the \0 is in the name
  supplied to require as opposed to the \0 being in @INC.

- making read-only operations such as stat() also fail.