AR relation accepts :primary_key as proc

Sometimes you need the power of eager loading with `includes` to avoid N+1 queries, but primary key for link is not just a column value.
Current implementation forces us to write a method, which fetches relation for each item if key for fetching isn't simple value.

I suggest to give a possibility to specify arbitrary key-values for loading with `includes`: 
- you define a proc which accepts an instance
- this proc returns keys (ID's), one or many, of linked rows in another table
- they will be fetched altogether if `includes` is used further 

I think, this is more flexible in comparison with just a column name anyway.
Of course, joins becomes impossible for this case, and I raise in this case,
but you can always specify multiple relations (one for join, another for include) if needed.

P.S.
The example given in tests I provide may look obscure, but imagine another use case:
- you have a hierarchy of tags bound to to things
- you need to fetch tags (flat) based on criteria
- each tag should have a group of things that are linked either to this tag, or it's it parents (which id's are stored in ancestry).
I'd like to provide this in tests but tags haven't neither parent_id nor ancestry, and I used Comment instead

If you like this I will also submit a backport for 3.2 (for which I developed this actually :) )