Replaced the use of std::set with IntrusiveList in ModeBase. (#28163)

* Replaced the use of std::set with IntrusiveList in ModeBase.

* Removed the std::set exeption for ModeBase.

* Restyled by clang-format

* Refoctor from review.

* Added a way to gracefully shutdown the ModeBase dreived clusters and used it in the linux all-clusters-app.

* Restyled by whitespace

* Restyled by clang-format

* Implemented required ApplicationExit().

* Restyled by clang-format

* Modified the ModeBase example shutdowns to be safe if Shutdown is called twice and properly free the memory.

* Renamed ApplicationExit() to ApplicationShutdown()

* Apply documentation suggestions from code review

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

---------

Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
diff --git a/examples/chef/linux/main.cpp b/examples/chef/linux/main.cpp
index 57e5273..9b15ae9 100644
--- a/examples/chef/linux/main.cpp
+++ b/examples/chef/linux/main.cpp
@@ -32,6 +32,8 @@
 
 void ApplicationInit() {}
 
+void ApplicationShutdown() {}
+
 int main(int argc, char * argv[])
 {
     if (ChipLinuxAppInit(argc, argv) != 0)