Platform: Add a NATS connection pool to allow recycling them

Problem to solve

Each of the Platform components establish their NATS connections during initialisation and continue to use it during their lifetime. The reason why we intend to manage the lifecycle of these connections explicitly is because NATS clusters can undergo maintenance and/or server restarts, post which we have noticed the components to not recover their connectivity and instead error. For example:

{"level":"warn","ts":"2025-11-05T14:04:16.288Z","logger":"enricher","caller":"enricher/controller.go:210","msg":"reading message","error":"nats: no heartbeat received"}

The ideal solution would be for components to actively rebuild their connections as soon as such an event occurs.

Bear in mind, each component using its own connection (and/or pool) is necessary by design considering all Platform components can be run standalone when the Platform is configured to run in the distributed mode. See: https://gitlab.com/gitlab-org/analytics-section/platform-insights/core#run-the-platform-distributed-with-each-component-in-its-own-container.

Edited by Ankit Bhatnagar