Require rubygems if necessary in test case sub process.

If RubyGems is loaded in the current process, then require it in the
sub-process, as it may be needed in order to require dependencies.
Thread safety.

- Use ThreadSafe::Cache for the Timezone and Country caches.
- Use a Mutex to ensure that the default DataSource is created at once.
- Load the timezone and country indexes when ZoneInfoDataSource is
  created instead of when the indexes are first needed.

Resolves #29787.