Create quiche_callbacks.h

quiche_callbacks.h introduces the following type aliases:
  - quiche::UnretainedCallback (alias for absl::FunctionRef)
  - quiche::SingleUseCallback (alias for absl::AnyInvocable with && qualifier)
  - quiche::MultiUseCallback (alias for absl::AnyInvocable with const qualifier)

Those are meant to replace existing usage of std::function in QUICHE.

PiperOrigin-RevId: 536477899
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 70cd31f..fe5dee7 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -47,6 +47,7 @@
     "common/platform/api/quiche_url_utils.h",
     "common/print_elements.h",
     "common/quiche_buffer_allocator.h",
+    "common/quiche_callbacks.h",
     "common/quiche_circular_deque.h",
     "common/quiche_crypto_logging.h",
     "common/quiche_data_reader.h",
@@ -1046,6 +1047,7 @@
     "common/platform/api/quiche_url_utils_test.cc",
     "common/print_elements_test.cc",
     "common/quiche_buffer_allocator_test.cc",
+    "common/quiche_callbacks_test.cc",
     "common/quiche_circular_deque_test.cc",
     "common/quiche_data_reader_test.cc",
     "common/quiche_data_writer_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 2cf1a78..5f25812 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -47,6 +47,7 @@
     "src/quiche/common/platform/api/quiche_url_utils.h",
     "src/quiche/common/print_elements.h",
     "src/quiche/common/quiche_buffer_allocator.h",
+    "src/quiche/common/quiche_callbacks.h",
     "src/quiche/common/quiche_circular_deque.h",
     "src/quiche/common/quiche_crypto_logging.h",
     "src/quiche/common/quiche_data_reader.h",
@@ -1046,6 +1047,7 @@
     "src/quiche/common/platform/api/quiche_url_utils_test.cc",
     "src/quiche/common/print_elements_test.cc",
     "src/quiche/common/quiche_buffer_allocator_test.cc",
+    "src/quiche/common/quiche_callbacks_test.cc",
     "src/quiche/common/quiche_circular_deque_test.cc",
     "src/quiche/common/quiche_data_reader_test.cc",
     "src/quiche/common/quiche_data_writer_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index c501c60..ae24505 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -46,6 +46,7 @@
     "quiche/common/platform/api/quiche_url_utils.h",
     "quiche/common/print_elements.h",
     "quiche/common/quiche_buffer_allocator.h",
+    "quiche/common/quiche_callbacks.h",
     "quiche/common/quiche_circular_deque.h",
     "quiche/common/quiche_crypto_logging.h",
     "quiche/common/quiche_data_reader.h",
@@ -1045,6 +1046,7 @@
     "quiche/common/platform/api/quiche_url_utils_test.cc",
     "quiche/common/print_elements_test.cc",
     "quiche/common/quiche_buffer_allocator_test.cc",
+    "quiche/common/quiche_callbacks_test.cc",
     "quiche/common/quiche_circular_deque_test.cc",
     "quiche/common/quiche_data_reader_test.cc",
     "quiche/common/quiche_data_writer_test.cc",