[User Education] Feature Promo Queue Implementation

This is the core queue structure that will be used by User Education
2.5's promo controller to schedule IPH.

The queue is designed to handle promos at a particular priority level,
with required conditions, conditions that must be met before the promo
can show, and a timeout function as well.

Maintenance on the queue is done on-demand; the owner is expected to
call methods to retrieve the next promo to show or to remove expired/
invalid promos.

New enum values for promo failures are also added:
 - TimedOut (when a promo is in the queue too long)
 - AlreadyInQueue (when a promo tries to re-queue while already
   queued)

Low coverage explanation: this slightly touches some internals-only
code which triggers the low-coverage warning. Coverage for the new
FeaturePromoQueue implementation is near total.

Low-Coverage-Reason: HARD_TO_TEST
Bug: 369887050
Change-Id: I423b348f18cb732fcc3a4635311c06c0253009dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5990238
Reviewed-by: Charles Meng <[email protected]>
Commit-Queue: Dana Fried <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1380001}
diff --git a/ui/base/interaction/interaction_sequence_test_util.h b/ui/base/interaction/interaction_sequence_test_util.h
index 4c991ca..81871aee 100644
--- a/ui/base/interaction/interaction_sequence_test_util.h
+++ b/ui/base/interaction/interaction_sequence_test_util.h
@@ -5,6 +5,7 @@
 #ifndef UI_BASE_INTERACTION_INTERACTION_SEQUENCE_TEST_UTIL_H_
 #define UI_BASE_INTERACTION_INTERACTION_SEQUENCE_TEST_UTIL_H_
 
+#include "base/test/bind.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/interaction/interaction_sequence.h"