Summary:
We are changing automatic mode so it always requires bootstrapping. This is necessary to ensure OIDs for things like enumerations are consistent between the two universes.
The old check of are there any tables containing data is not sufficient for this. It is also expensive so this gives us an opportunity to avoid that expense.
Here we always return true for does a namespace need to be bootstrapped and don't bother to check the tables for data.
A number of tests had to be updated because they incorrectly assumed that is bootstrap required would be false with an empty database or empty tables.
Did a few bits of tidying/modern-rizing while I was at it.
Fixes #24030
Jira: DB-12922
Test Plan:
New unit test, verified to fail before changes:
```
ybd --cxx-test xcluster_ddl_replication-test --gtest_filter '*.BootstrappingEmptyTable'
```
Manually verified output does not contain the output from:
```
~/code/yugabyte-db/src/yb/cdc/xcluster_producer_bootstrap.cc:124:
if (req_.check_if_bootstrap_required()) {
LOG_WITH_FUNC(INFO) << "Checking if bootstrap is required.";
resp_->set_bootstrap_required(VERIFY_RESULT(IsBootstrapRequired()));
```
That is, we are not doing the expensive work to see if any of the tables in the involved namespace are nonempty.
Changed tests:
```
ybd release --cxx-test xcluster_ddl_replication-test
ybd release --cxx-test xcluster_sequences-test
ybd release --cxx-test xcluster_outbound_replication_group-itest
ybd release --cxx-test xcluster_db_scoped-test
ybd release --cxx-test xcluster_ddl_replication_pgregress-test
```
Reviewers: xCluster, hsunder
Reviewed By: hsunder
Subscribers: jhe, ybase
Differential Revision: https://phorge.dev.yugabyte.com/D42593