Treat all tied filehandles as filehandles

This removes special-case code for IO::String, and instead
simply checks whether the thing is a tied filehandle. If
the tied filehandle was implemented correctly, things should
Just Work.

Of course, reality is somewhat less properly-implemented
than you might hope. IO::String doesn't know how to binmode,
and IO::Scalar doesn't even implement the BINMODE part of
the tied filehandle interface. The tied filehandle test
therefore uses todo_skip so no tests are actually run.