Preserve user supplied JOIN order

JOIN clause order is important, previous implementation always put string or arel joins at then end (after auto-generated association joins).

Fixes #12953.

/cc @tenderlove