Support merging joins across searches using a shared context

When merging search criteria, it's necessary to use the same join
dependency with a shared alias tracker. This can be achieved by passing
a context option when building Search objects.

Rails 3.0: use Model.joins(context.join_associations) to merge relations
with JoinAssociations.

Since Rails 3.1: can use Model.joins(context.join_sources) to merge
relations with Arel::Join nodes.

Since Rails 4.1: only context.join_sources is available as Arel,
context.join_associations stops being supported.
Merge pull request #412 from avit/shared-context

Support merging searches using shared context