WL#9468: Improve string usage in DD code

Affects: Server-8.0   —   Status: Complete

Incrementally improve the usage of strings in the DD code. Currently the DD code 
makes extensive use of std::string, which is safe (compared to const char *), but 
allocates directly on the system heap (bypasses performance schema 
instrumentation) and may throw exceptions.

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

Code cleanup. No user documentation required.
Changes will be done incrementally in the following stages (more stages may be 
added later):

1. Introduce a typedef dd::string_type for all string usage in the DD code. 
Initially this typedef will be an alias for std::string. This will simplify the 
process of trying out different string implementations.

2. Create a template for a stateless allocator which can be instantiated with 
closures that use different performance schema memory keys. (Since the PFS key 
not a compile time constant, it cannot be given directly as a template argument, 
but must be provided by a closure or callable type).

3. Create a PFS key for DD string usage.

4. Change the typedef in 1. to an instantiation of std::basic_string using the 
allocator from 2.