MongoCursor::key() should return iteration offset when no _id is available

Adds support for array and object values to be consistent with hash-handling functions in the PHP driver. When the document has no "_id" field (e.g. explain output), the iteration offset of the cursor should be used. This means we need to track the value internally and increment and reset it in next() and reset(), respectively.
MongoCursor::current() should return null when there is no result
Fix getNext() return type to be consistent with next()
Fix MongoCursor::explain() to work around native method quirks