GValue: Add interned string support
This adds support to be able to explicitely stored interned strings into G_TYPE_STRING GValue.
This is useful for cases where the user:
- knows the string to be stored in the GValue is canonical
- Wants to know whther the string stored is canonical
This allows:
- zero-cost GValue copy (the content is guaranteed to be unique and exist throughout the process life)
- zero-cost string equality checks (if both string GValue are interned, you just need to check the pointers for equality or not, instead of doing a strcmp).
Fixes #2109 (closed)
Edited by Sebastian Dröge