add $geoIntersects criteria with box geometry
GeoJSON format expects a number
added test for geointersect with box
changed function parameters to x/y pairs as in other geospatial functions
add $geoWithin for GeoJSON polygon
Add $geoIntersects with all three GeoJSON types and a box helper
Add box helper for $geoWithin
Support GeoJSON polygons (with holes)

This changes the polygon methods to accept an array of rings, which themselves are arrays of point tuples. Subsequent rings define holes in the first ring (i.e. outer polygon). In the future, it may be worthwhile to have a builder for polygons.
Update param type docs for older geo builder methods
Rename Query::TYPE_GEO_LOCATION to TYPE_GEO_NEAR
Separate unit and functional query builder tests
Use GeoJson objects for 2dsphere query builder/expr methods

This adds an optional dependency to a GeoJSON library (see: composer.json) for handling 2dsphere queries in query builder and expression methods. It was necessary to discern between GeoJSON points and legacy coordinates for $near and $nearSphere operators, due to how they incorporate the $maxDistance option. Additionally, using an external library for GeoJSON geometries removes the responsibility of validating those geometries from doctrine/mongodb.

Tests were updated and added for all geospatial methods in the builder and expression classes.
Unit tests for all Builder methods that simply proxy Expr methods
Support GeoJSON geometry arrays in addition to the library objects

This relaxes the GeoJSON library dependency, so 2dsphere queries (namely $geoIntersects and $geoWithin) can still be done without it.