Add special type for representing special values

Before this, pseudo-values like lists and containers were represented by
a string leaf value. Now, I can tell these values apart. This can be
helpful for filtering (for example, when printing the values).  It will
also be used for implementing key value completion.

Change-Id: I48f6fa2facaf3e8e52aa3b3b4d92130e63acdb6f
diff --git a/src/utils.cpp b/src/utils.cpp
index 672cd36..eb4f432 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -108,6 +108,11 @@
         return data.m_prefix.value().m_name + ":" + data.m_value;
     }
 
+    std::string operator()(const special_& data) const
+    {
+        return specialValueToString(data);
+    }
+
     std::string operator()(const std::string& data) const
     {
         return data;