WL#9503: mysql string functionalities as a service for mysql_server component

Affects: Server-8.0   —   Status: Complete

What is the problem ? 

MySQL has a platform independent character set implementation. To minimize
string conversions all strings in the server core have a character set attached
to them that's carried along as further as possible. This is done through a
special C++ class (String). Components may need to manipulate some of these
String instances. But due to the fact that C++ classes don't travel well across
heap boundaries (dll/exe etc) we need a C API for these class instances.

Why only this much ?

The full API for that would be very large. So this worklog implements only the
minimum subset that the password validation component (and plugin) needs.

How ?

We take the existing composite plugin service (a wrapper around String methods)
and break it up into multiple logically separate component services. This is a
typical example for how re-engineering of existing plugin APIs into service APIs
should go.

User Documentation
==================

* https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-2.html
* https://dev.mysql.com/doc/refman/8.0/en/component-plugin-services.html