Fix incorrect advertisement after RemoveFabric. (#15890)

We ended up advertising ourselves as commissionable even though we
weren't.

Remove the guessing about what we should advertise and add an explicit
API for the DNS-SD server to be able to ask what commissioning mode we
should be in if it's not told a specific mode.

Removed some StartServer() calls in places where we did manual
advertising right before or after opening a comissioning window (which
already resets advertising).

Fixes https://github.com/project-chip/connectedhomeip/issues/15875
diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp
index a898bcc..da6d876 100644
--- a/src/app/server/Server.cpp
+++ b/src/app/server/Server.cpp
@@ -140,6 +140,7 @@
     SuccessOrExit(err);
 
     app::DnssdServer::Instance().SetFabricTable(&mFabrics);
+    app::DnssdServer::Instance().SetCommissioningModeProvider(&mCommissioningWindowManager);
 
     // Group data provider must be initialized after mDeviceStorage
     err = mGroupsProvider.Init();
@@ -334,6 +335,7 @@
 
 void Server::Shutdown()
 {
+    app::DnssdServer::Instance().SetCommissioningModeProvider(nullptr);
     chip::Dnssd::ServiceAdvertiser::Instance().Shutdown();
     chip::app::InteractionModelEngine::GetInstance()->Shutdown();
     CHIP_ERROR err = mExchangeMgr.Shutdown();