Revert grep to select since they are not the same

A previous commit swapped out a call to select for a call to grep in
time_zone_options_for_select. This behavior actually causes the
regexp priority option to stop working.

ActiveSupport::TimeZone overrides the =~ operator which is what the
select block was using previously. Enumerable#grep
checks pattern === element and in this case that would be /US/ ===
ActiveSupport::TimeZone which does not work because
ActiveSupport::TimeZone does not supply an implicit converting to_str
method, only an explicit to_s method.

It would be impossible to provide a to_str method that behaves
identically to the =~ method provided on ActiveSupport::TimeZone
so the only option is to revert back to using select with =~.
Add regression test for TZ grep

Added a regression test that will fail if anyone tries to change
time_zone_select to use grep again thinking it will work when it does
not.
Merge pull request #9680 from bdmac/time-zone-options-revert-grep-to-select

Revert grep to select since they are not the same
Break down  Rails::Generator::TestCase into modules