Add Fence helpers: Time, Timeline, Snapshot

FenceTime will be used to:
1) Cache and share the result of a Fence's getSignalTime with
   all clients that care about it, instead of requiring a
   syscall for each client.
2) Allow tests to override the valid state and signalTimes of
   the underlying fence by acting as a shim.

FenceTimeline will be used to efficiently get the signal
times of Fences without having query for Fences that
likely haven't signaled.

FenceTime::Snapshot is a stable copy of a FenceTime that
can be used for serialization since it doesn't change
while flattening.

Test: adb shell /data/nativetest/libgui_test/libgui_test
--gtest_filter=*GetFrameTimestamps*

Change-Id: I9a28df7ce797311dc4d56b1147edf590e9de1517
diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp
index 087e877..661d1c8 100644
--- a/libs/ui/Android.bp
+++ b/libs/ui/Android.bp
@@ -43,6 +43,7 @@
     srcs: [
         "ColorSpace.cpp",
         "Fence.cpp",
+        "FenceTime.cpp",
         "FrameStats.cpp",
         "Gralloc1.cpp",
         "Gralloc1On0Adapter.cpp",