[2.29] Wrap `Profile`
Wrapping https://github.com/TileDB-Inc/TileDB/pull/5492, https://github.com/TileDB-Inc/TileDB/pull/5498, https://github.com/TileDB-Inc/TileDB/pull/5539, https://github.com/TileDB-Inc/TileDB/pull/5547, and https://github.com/TileDB-Inc/TileDB/pull/5552.
The above PRs introduce the Profiles functionality, aimed at providing users with a seamless experience across all TileDB APIs. With Profiles, users can log in once and only once, interacting with a single source of truth across all APIs - without needing to be aware of the underlying implementation details.
On the TileDB-Py side, this is achieved by integrating Profiles into the Config via new profile_name and profile_dir Config parameters. Profiles created with the default name and directory are automatically loaded, eliminating the need to set any Config parameter explicitly. When retrieving rest.* parameters from a Config, Profiles act as a third fallback after user-set Config values and environment variables.
cc. @bekadavis9, @rroelke for visibility.
Closes CORE-128