Instead of the flimsy utf8 encoding, use UTF-8 and fix bogus data.

Old versions of RT (especially those running on MySQL) were happy to pass
garbage into MySQL and it was stored there, lurking, waiting for you to
retrieve it.  If you do retrieve it and then try to treat it like UTF-8
data (say by passing it to another system that strictly handles UTF-8
such as PostgreSQL) it will be rejected vigorously.

This converts from

Encode::decode('utf8','string');
which doesn't check the content and converts to perl's internal utf8.

Encode::decode('UTF-8','string',Encode::PERLQQ);
which converts to actual UTF-8 strings and will apply the PERLQQ filter
documented in the Encode docs under Handling Malformed Data.

This is similar to what we now do to all Web UI input in
RT::Interface::Web::DecodeArgs
Merge branch '4.0/strict-decodelob-decoding' into 4.0-trunk