Catch and re-issue utf8 warnings at a higher level

This catches Encode::Unicode warnings and re-issues them from Encode, so
that callers can disable warnings lexically with `no warnings 'utf8'`.

Fixes https://rt.cpan.org/Ticket/Display.html?id=88592