Prevent filehandle() (and anything which uses it) from clearing $@.

Getting a filehandle with an encoding will clear $@.  This is actually
a problem in Encode.  Encoding::Encoding::perlio_ok() has an
unprotected eval block.  But that's a core module outside of our
control.

This potentially affects all the *_utf8 methods.

This is particularly bad for append_utf8() because logging an error
will also delete the error.