Use more C++17 features

Mainly structured bindings, inline variables, and class template
argument deduction, plus many more smaller things.

Change-Id: I810d17e0adb470426e4e30c898e03b3140ad052f
diff --git a/tools/nfdc/command-parser.hpp b/tools/nfdc/command-parser.hpp
index e0e10b0..f03027b 100644
--- a/tools/nfdc/command-parser.hpp
+++ b/tools/nfdc/command-parser.hpp
@@ -93,7 +93,7 @@
    *  \return commands in insertion order
    */
   std::vector<const CommandDefinition*>
-  listCommands(const std::string& noun, ParseMode mode) const;
+  listCommands(std::string_view noun, ParseMode mode) const;
 
   /** \brief parse a command line
    *  \param tokens command line