Strings representation inside the Mono runtime.
All of the operations on strings are done on pointers to `MonoString` objects, like this:
Strings are bound to a particular application domain, which is why it is necessary to pass a MonoDomain argument as the first parameter to all the constructor functions.
Typically, you want to create the strings on the current application domain, so a call to mono_domain_get() is sufficient.