sdbus++: add support for 'set'

Add 'set' as a supported type to `sdbus++` and set as `std::set`.
The use of ordered-set is to match 'dict' as `std::map` and because
'struct' is `std::tuple`, which has `operator<=>` but not `std::hash`.
This ensures better compatiblilty with possible property type choices
by users.

Also, add a few test cases to ensure `std::set` and `std::unordered_set`
are well-covered.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I59605db1b22d54f783d807eda1e1ec1f9eb6792f
diff --git a/test/message/types.cpp b/test/message/types.cpp
index 4020559..89cab14 100644
--- a/test/message/types.cpp
+++ b/test/message/types.cpp
@@ -45,3 +45,17 @@
 {
     ASSERT_EQ(dbus_string(sdbusplus::message::signature("sss")), "g");
 }
+
+TEST(MessageTypes, VectorOfString)
+{
+    std::vector<std::string> s = {"a", "b"};
+
+    ASSERT_EQ(dbus_string(s), "as");
+}
+
+TEST(MessageTypes, SetOfString)
+{
+    std::set<std::string> s = {"a", "b"};
+
+    ASSERT_EQ(dbus_string(s), "as");
+}