Init ArrayCollections in User test model and delete unused field
Query::execute() clean up

Check $hydrate once before attempting any hydration and priming. Also restrict the findAndModify result processing based on the query type, as is done for geoNear.
Refactor reference priming (callback signature changes)

Primer functions now take ClassMetadata as the second argument instead of class name string. The $fieldName argument has been removed.

Builder::prime() now validates its argument types. Reference priming now deferred until end of Query::execute(), so it can process geoNear and findAndModify results, too.

Moved reference priming out of DocumentPersister and into its own class. Added test cases for standard, simple, and discriminated references.
Document referencing priming changes
Regression test for prime() and getSingleResult() (closes #520)

Although the exception reported in #520 was actually fixed with a change in doctrine/mongodb, this commit adds a regression test for ODM. There is an additional test to document that priming will perform unnecessary work when getSingleResult() is used, since all documents in the query result set are primed.
Merge pull request #717 from doctrine/reference-priming

Refactor reference priming and change callback signature