PHP-1056: Limit legacy projection argument handling to numeric arrays

The "field names must be strings" exception was intended for the legacy argument style (i.e. array of field names to include). One could argue that the original code should simply have cast array values to strings for convenience, but we definitely don't need this processing for associative arrays. This does leave an edge case where the associative array is indistinguishable from a numeric array, which we cover in the included tests.
Merge pull request #665
Fixed PHP-1059: updatedExisting always true

The updatedExisting field should always be set - but only when upserted is not set and n > 1 it is true
Merge pull request #666 from bjori/update-existing

Fixed PHP-1059: updatedExisting always true

* bjori/update-existing:
  Fixed PHP-1059: updatedExisting always true
Fixed PHP-1036: Segmentation Fault when querying large collection and the working set is not loaded
Fix similar issues as PHP-1036 by verifying if we actually have a zval before trying to
return it. mongo_rucommand() will throw an exception if its null, so no need to else RETURN_NULL()