Add -Wextra-semi -Wundefined-func-template to the default CXXFLAGS

And fix the resulting compilation errors.

Change-Id: I16f679836a0cf2a3ff5dfcf6f6b67bfbfe4cdbd7
Refs: #4248
diff --git a/src/exclude.hpp b/src/exclude.hpp
index e3494f2..0bd6155 100644
--- a/src/exclude.hpp
+++ b/src/exclude.hpp
@@ -132,7 +132,7 @@
   bool
   operator!=(const Exclude& other) const;
 
-public: // interal storage
+public: // internal storage
   /**
    * @brief either a name::Component or "negative infinity"
    */
@@ -292,8 +292,7 @@
   operator<<(std::ostream& os, const Exclude& name);
 };
 
-std::ostream&
-operator<<(std::ostream& os, const Exclude& name);
+NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(Exclude);
 
 bool
 operator==(const Exclude::ExcludeComponent& a, const Exclude::ExcludeComponent& b);
@@ -304,6 +303,9 @@
 std::ostream&
 operator<<(std::ostream& os, const Exclude::Range& range);
 
+std::ostream&
+operator<<(std::ostream& os, const Exclude& name);
+
 inline Exclude::const_iterator
 Exclude::begin() const
 {