Fix incorrect partial matching for $in query

Alternative implementation to #77.  Fixes #76.

This change:
* cherry picks the tests provided in #77 
* removes the utils.contains method and therefore the use of string matching on stringified object.
* handles projections and the use of ObjectIds mentioned in #77