SF: Add promise/future utilities

promise::defer and promise::yield return a deferred future given a
lambda or value, respectively. promise::chain enables composition
of sequential futures.

Bug: 123715322
Bug: 134772048
Test: PromiseTest
Change-Id: Iff81407d60a357d76b5863c4a3a8af7760bd8c33
diff --git a/services/surfaceflinger/tests/unittests/Android.bp b/services/surfaceflinger/tests/unittests/Android.bp
index 2f2fb20..7574ff1 100644
--- a/services/surfaceflinger/tests/unittests/Android.bp
+++ b/services/surfaceflinger/tests/unittests/Android.bp
@@ -48,6 +48,7 @@
         "LayerHistoryTestV2.cpp",
         "LayerMetadataTest.cpp",
         "PhaseOffsetsTest.cpp",
+        "PromiseTest.cpp",
         "SchedulerTest.cpp",
         "SchedulerUtilsTest.cpp",
         "SetFrameRateTest.cpp",