Add stringification for std::chrono::{duration,time_point}

Also hides std::chrono, std::pair and std::chrono::* behind
new configuration macros, CATCH_CONFIG_ENABLE_*_STRINGMAKER
to avoid dragging in <utility>, <tuple> and <chrono> in common
path, unless requested.
diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt
index f3a9ee6..b05dd46 100644
--- a/projects/SelfTest/Baselines/xml.sw.approved.txt
+++ b/projects/SelfTest/Baselines/xml.sw.approved.txt
@@ -5250,6 +5250,88 @@
       </Section>
       <OverallResult success="false"/>
     </TestCase>
+    <TestCase name="Stringifying std::chrono::duration helpers" tags="[chrono][toString]" filename="projects/<exe-name>/ToStringChrono.cpp" >
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          minute == seconds
+        </Original>
+        <Expanded>
+          1 m == 60 s
+        </Expanded>
+      </Expression>
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          hour != seconds
+        </Original>
+        <Expanded>
+          1 h != 60 s
+        </Expanded>
+      </Expression>
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          micro != milli
+        </Original>
+        <Expanded>
+          1 us != 1 ms
+        </Expanded>
+      </Expression>
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          nano != micro
+        </Original>
+        <Expanded>
+          1 ns != 1 us
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="Stringifying std::chrono::duration with weird ratios" tags="[chrono][toString]" filename="projects/<exe-name>/ToStringChrono.cpp" >
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          half_minute != femto_second
+        </Original>
+        <Expanded>
+          1 [30/1]s != 1 fs
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="Stringifying std::chrono::time_point&lt;Clock>" tags="[chrono][toString]" filename="projects/<exe-name>/ToStringChrono.cpp" >
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          now != later
+        </Original>
+        <Expanded>
+          {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+        </Expanded>
+      </Expression>
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          now2 != later2
+        </Original>
+        <Expanded>
+          {since-epoch-report}
+!=
+{since-epoch-report}
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
+    <TestCase name="Stringifying std::chrono::time_point&lt;system_clock>" tags="[chrono][toString]" filename="projects/<exe-name>/ToStringChrono.cpp" >
+      <Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ToStringChrono.cpp" >
+        <Original>
+          now != later
+        </Original>
+        <Expanded>
+          {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+        </Expanded>
+      </Expression>
+      <OverallResult success="true"/>
+    </TestCase>
     <TestCase name="Tabs and newlines show in output" tags="[.][failing][whitespace]" filename="projects/<exe-name>/MiscTests.cpp" >
       <Expression success="false" type="CHECK" filename="projects/<exe-name>/MiscTests.cpp" >
         <Original>
@@ -8209,7 +8291,7 @@
       </Section>
       <OverallResult success="true"/>
     </TestCase>
-    <OverallResults successes="757" failures="100" expectedFailures="21"/>
+    <OverallResults successes="765" failures="100" expectedFailures="21"/>
   </Group>
-  <OverallResults successes="757" failures="99" expectedFailures="21"/>
+  <OverallResults successes="765" failures="99" expectedFailures="21"/>
 </Catch>