Add utf8 to utfmb8 conversion api command
This extracts from https://github.com/civicrm/civicrm-core/pull/13633 the portion that deals with the conversion
and switches it from an upgrade script (which is not agreed at this stage as there are concerns about
imposing this change) to an api command (which can be added with relatively little discussion as
it only affects those who choose to use it).
We don't expect this command to outlive apiv3 so adding there & not creating insta-tech-debt on
apiv4.
In order to add a unit test I had to alter to support reverting - doesn't seem like a bad thing all round.
As an aside - I like the way it changes the DB level charset & collation. I think I've seen these fail to be set
in the wild