TraceTimestampTraits::ConvertTimestampToTraceTimeNs.

Refactor existing method to allow clients to use custom types as
timestamps to use template struct instead of templated function.

The main reason for that is that templated function doesn't allow for
checking whether a given type has a specialisation or not at the compile
time (if the necessary specialisation is missing, it will fail at link
time), so first condition in IsValidTimestamp now is always true and
can't be relied upon.

Fix this by wrapping the function in TraceTimestampTraits, so the check
will succeed only when TraceTimestampTraits::ConvertTimestampToTraceTimeNs is
actually defined, so IsValidTimestamp can be used to support more
complex trace arguments combinations.

Note: this will break clients overriding ConvertTimestampToTraceTimeNs.
However the updates there should be straighforward and given that this was
added fairly recently only Chromium is expected to use this at this
point (this patch is expected to break the roll and should be submitted
together with the Chromium-side fix).

Bug: b/184558843
Change-Id: I588abcc9dd7466ff45a8cf9bfb5eaab2f24b1574
diff --git a/CHANGELOG b/CHANGELOG
index b0c3750..fee282f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,9 @@
     *
   UI:
     *
+  SDK:
+    * Changed ConvertTimestampToTraceTimeNs to be a member of
+      TraceTimestampTraits<T> struct instead of a standalone function.
 
 
 v14.0 - 2021-04-01: