CDRIVER-1888 test for duplicate fields in subdocs
CDRIVER-1888 test for duplicate fields in subdocs

The mock server aborts if it detects the client has sent it a command
with duplicate field names, to catch a common type of subtle bug. Now,
it also recursively checks subdocuments.

beingmeta/mongo-c-driver,remicollet/mongo-c-driver,jmikola/mongo-c-driver,mongodb/mongo-c-driver,derickr/mongo-c-driver,ajdavis/mongo-c-driver,jmikola/mongo-c-driver,rcsanchez97/mongo-c-driver,acmorrow/mongo-c-driver,mongodb/mongo-c-driver,remicollet/mongo-c-driver,mongodb/mongo-c-driver,mongodb/mongo-c-driver,rcsanchez97/mongo-c-driver,beingmeta/mongo-c-driver,jmikola/mongo-c-driver,acmorrow/mongo-c-driver,derickr/mongo-c-driver,beingmeta/mongo-c-driver,rcsanchez97/mongo-c-driver,remicollet/mongo-c-driver,mongodb/mongo-c-driver,remicollet/mongo-c-driver,acmorrow/mongo-c-driver,beingmeta/mongo-c-driver,jmikola/mongo-c-driver,acmorrow/mongo-c-driver,rcsanchez97/mongo-c-driver,ajdavis/mongo-c-driver,rcsanchez97/mongo-c-driver,rcsanchez97/mongo-c-driver,ajdavis/mongo-c-driver,ajdavis/mongo-c-driver,ajdavis/mongo-c-driver,mongodb/mongo-c-driver,derickr/mongo-c-driver,derickr/mongo-c-driver,beingmeta/mongo-c-driver,ajdavis/mongo-c-driver,derickr/mongo-c-driver,beingmeta/mongo-c-driver,rcsanchez97/mongo-c-driver,acmorrow/mongo-c-driver,acmorrow/mongo-c-driver,beingmeta/mongo-c-driver,remicollet/mongo-c-driver,jmikola/mongo-c-driver,mongodb/mongo-c-driver,jmikola/mongo-c-driver,derickr/mongo-c-driver,jmikola/mongo-c-driver,remicollet/mongo-c-driver,derickr/mongo-c-driver,acmorrow/mongo-c-driver,remicollet/mongo-c-driver,ajdavis/mongo-c-driver,beingmeta/mongo-c-driver