Bring back the detailed update selectors.

This is part 1 of #2545.
Remove the unused insert consumer
User $ operator where appropriate.

In the cases where the selector permits it, we now use the positional
operator on atomic updates for embedded documents nested at the first
level deep.

Documents lower than one level will continue to use indexes.

[ close #2545 ]
Update rdoc in atomic module
Dont' clone or dup 'id' fields. [ close #2704 ]
Switch database name when appropriate on session override.

[ close #2714 ]
[ close #2718 ]
Fix find_or_(create|initialize)_by on scoped relations.

[ fix #2707 ]
Update license dates
Cache exists and first when appropriate.

[ close #2667 ]
Make #distinct available at the class level.

[ fix #2719 ]
Allow index definitions on specific databases.

[ close #2615 ]
Allow passing a block to instantiate
Only validate changed associated documents. (regression)

[ fix #2703 ]
Update changelog
Update changelog
Update changelog
Update changelog to reflect #2683 pullback
Update changelog to reflect #2671 pullback
Update changelog
Ensure that .sort method change criteria

.sort method was not changing the criteria, so when .first applied it assumed there was no sort and it was ignoring it
making apply_sorting a block function to unsure it will reset the query after execution of .first or .last