Cache constructor arguments for use with multiple hosts

With multiple hosts, MongoClient creates a subordinate MongoClient
object for each host.  The existing code only used a subset of
arguments, which can cause connection problems (like omitteing 'ssl').

This commit caches the full set of constructor arguments and uses them
all (suitably overridden) when creating subordinate server connections.

(side note: a GridFS test fails, but it was failing on master before this commit anyway)