Remove recursive merging in Expr::addManyToSet()

The recursive merging in addManyToSet() dates back to: doctrine/mongodb-odm@59a2da0bf7a53075f9d93b9b1327abccf561c1d1. This could be problematic if addManyToSet() was called multiple times with deep array values, as they could be merged together in PHP. The new behavior will just overwrite the existing value in $newObj, like other update operators.
Implement Expr::each() and allow it to be used with addToSet()
Deprecate Expr::addManyToSet() in favor of addToSet() and each()
Support $each/$slice/$sort operators with push()

MongoDB 2.4 deprecates the $pushAll operator in favor of $push with $each. Additionally, it adds support for $slice and $sort (only in combination with $each).
Expr::push() should ensure $each operator appears first

If the $each operator does not appear first, the $push argument will be considered a single value to append to the array field.