Make create_join_table use the same logic as HABTM reflections

Closes #13683.

`create_join_table` and the HABTM associations used different logic to decide what name to generate for the join table. Given the models `Music::Artist` and `Music::Record`, one would go for `music_artists_music_records`, while the other for `music_artists_records`. This change unifies the logic and extracts it to the same place.

We were not sure where to extract the common logic. We chose `ActiveRecord::ModelSchema` because it has similar table name computation logic. Feel free to suggest a better place.

/cc @senny
@rafaelfranca I don't think the caller has either of the model classes (into which the concern is included), so wouldn't that just mean they must explicitly use `ModelSchema::ClassMethods.derive_join_table_name(table_1, table_2)` ? :neutral_face: