client: format cleanup.
counters: add function to reset counter.

As requested by those consuming downstream.
counters: only increment n_counters after counter has been initialized.
counters: add notes, don't allow readers to race.
stat: do positioned read for shared memory size.

This means we don't need to do a double mmap() and also means we can
handle an incomplete set up shared memory area.
cluster: add _mongoc_cluster_command_early().

This is meant for sending a command before the cluster has been
initialized. It forces the cluster to start-up and executes the
command.

The error value can be used to notify the call chain of connection
failure.

This is primarily meant for mongoc_client_warm_up() and may not be
useful in other scenarios where we have already connected.
client: warm up client to determine wire-version to use.

This will help with situations where we need to do an insert but do
not yet know what our negotiated wire version is.

Functions needing to know the wire-version should first call the
private _mongoc_client_warm_up() function.

It will either result in a failure, (and error set), or TRUE indicating
success and client->cluster.wire_version is valid.
cursor: use $query and $readPreference in query if necessary.

If we are potentially sending to a secondary, we might need to include
$readPreference based on the read mode.

Primary and secondaryPreferred without tags do not require this.

See DRIVERS-63.
cursor: read prefs are flags, not an enum.

Use a switch for a lookup table since we use bit flags to efficiently
do checks on read mode (rather than a plain enum).
working