Added #or to ActiveRecord::Relation

To complement the default *and* behaviour while building relations, allow two **very similar** relations to be combined with an *or*.

    Post.where('id = 1').or(Post.where('id = 2'))
    # => SELECT * FROM posts WHERE (id = 1) OR (id = 2)

Unlike previous attempts, we avoid any ambiguity about "how much" we're ORing by exclusively accepting a second relation -- thus, we're ORing whatever conditions differ between the two.

This is a much stricter variant of @gaelmuller's #9052; see also @oelmekki's #10891.

/cc @dhh @jeremy @tenderlove @rafaelfranca
Could we provide more guidance as to why they were structurally incompatible? Perhaps `structurally_compatible?` could become a `structural_incompatibilities` method, which returns an array of all of the ways in which they are incompatible, the condition could change to `structural_incompatibilities.any?`, and we could join the result for the error message.