Fix build of lookup table for grouped ids

The ODM allows the use of custom types for identifier fields, however it currently uses the PHP value of an identifier as an array index key for grouping IDs together. This throws errors when the PHP value is a non-scalar.
Fix Proxy initializer and cloner for custom identifier types

Current implementation relies on DocumentPersister::load() behavior for transforming a scalar or MongoId argument to the appropriate selection criteria, but this check fails when the identifier is a custom type (e.g. embedded object).

Fixed by always appropriately passing an array of criteria instead.
Do not use keys in DocumentPersister calls to Cursor::toArray()

Allowing iterator_to_array() to use document "_id" fields as array keys is problematic when documents have non-scalar keys (e.g. embedded objects or MongoBinData, which seems to always return "<Mongo Binary Data>" as its string value). See #854 for more context.

This change also reverts ec69eaa2c5fc825a797bcb38e5eb20f4187a8949 from #401. Technically, inverse side relationships should be read-only, so there should be no reason for a set strategy. The previous behavior was also inconsistent with owning side relationships, which used keys from the actual array/object containing the references (not the "_id" fields of the referenced documents).
Regression test for ref-many and proxy support of custom IDs (#852)
Merge pull request #852