fixing issues with referencedMany

Adding & removing has been very buggy. These changes also simplify the update of reference
fields.

In principle, ->replace should work as expected on groups, and it should be the preferred
method for applying "big" changes to groups.
(cherry picked from commit 6c9f7b9983469ad4aeab7f8cc20cc3939631916d)
fix for 5.3
(cherry picked from commit 187d1f3d8640d251d130faf48a63f3204240b96a)
Force $set instead of $pushAll for embeddeds with no saved contents
(cherry picked from commit 9d5a929cca2319c1f2a3f054e88d4460b6993bef)
Consider groups with added elements as modified

This is kind of a grey area, as an empty new embedded added to the group is now considered as
a modification. We need to explore the implications of this.

This fix has been made to make "$group->replace($docs)" work properly with unmodified embeddeds.
(cherry picked from commit d4e0704889f84857510c6ec5589d2628a7688275)
ignore vim swp files
(cherry picked from commit 332a85706569b4b58ec571ae7ce8c108a96d7cd4)
new field cache policy

If there is a field cache, those fields are read. When getting a property that was not read from
the DB, the FULL document is reloaded (without overwriting modified fields) and that field is
added to the cache for later executions.

This should fix our issues with empty fields when the field cache is "partially complete".
(cherry picked from commit f121af33189bc8df517189b5888d2331438f5ecf)
documentation
(cherry picked from commit 990de192c17f187594ad77beb5839e557722d015)
Merge pull request #30 from dripolles/backport

Backport of new cache fields policy for 1.1.x