GLib::environ_getenv should provide a clue whether the variable is present in the vector

From https://docs.gtk.org/glib/func.environ_getenv.html:

The value of the environment variable, or NULL if the environment variable is not set in envp. The returned string is owned by envp, and will be freed if variable is set or unset again.

It should probably return std::optional<std::string>. That's what glibmm does: https://gitlab.gnome.org/GNOME/glibmm/-/blob/master/glib/glibmm/environ.cc#L35

That is, the following code should return nullopt: GLib::environ_getenv({}, "TEST")
The following code should return empty string: GLib::environ_getenv({ "TEST=" }, "TEST")

If C++17 is still a problem, expected<std::string, std::nullptr_t> could probably be used as expected is a super-set of optional... Or unique_ptr/shared_ptr.

Edited by Ilya Fedin