SERVER-8013 Update shell helper db.auth() to support SASL authentication.

Make the parameters to saslClientAuthenticate in the C++ driver use field names
consistent with the field names in system.users documents.

Remove an information leak on auth failure in which the non-existence of a user
was revealed.

Have saslClientAuthenticate take a clear password as input, like DBClientWithCommands::auth().
SERVER-8461 When MONGO-CR is not enabled for regular users, still allow it for keyfile.
SERVER-8983 Include AuthenticationFailed error code in failed MONGODB-CR authentications.
SERVER-8100 Do not expect a code in sasl commands that return ok: 1.

Also, correctly report error messages when ok: 0 and code field is present.
SERVER-6295 make time in log have millisecond precision
SERVER-7091 When available, include authenticated user information in log messages.

Conflicts:
	src/mongo/util/log.cpp
make sure test commands get enabled on all mongod and mongos instances started in tests

Conflicts:
	src/mongo/shell/servers.js
Test that test-only commands don't work unless --setParameter=enableTestCommands=1 is set at startup.
SERVER-4237 Add logging to jstests/drop2.js to help investigate auth failure on buildbot
SERVER-4237 SERVER-8191 Enable master/slave replication tests to run with auth
SERVER-4237 SERVER-6972 Skip jstests/sharding/read_pref_cmd.js when run with auth
SERVER-4237 Make jstests/repl/repl7.js work with auth
Skip jstests/sharding/read_pref.js when running test with auth SERVER-6972 SERVER-4237
Make authenticate retry on socket exception SERVER-4237
Don't start a mongod when running CppUnittests.

Conflicts:
	SConscript.smoke
	buildscripts/smoke.py
Make authenticate actually retry on failure.  SERVER-4237
SERVER-7128 Changes to smoke.py and utils.js to run tests with sasl authentication.

Conflicts:
	buildscripts/smoke.py
Test that test-only commands don't work unless --setParameter=enableTestCommands=1 is set at startup.

Conflicts:
	src/mongo/shell/utils.js
SERVER-7128 Add --authenticationMechanism parameter to mongo shell.
SERVER-8414/SERVER-8429 Support SASL authentication in DBClient::auth() method, tools.

Introduces a new overload of the auth() method of DBClientWithCommands to the
C++ driver.  The new overload takes a single BSONObj of authentication
parameters as input, and is analagous to the saslClientAuthenticate method.
This new method supports all SASL methods, if the client has GSASL support and
previously ran the mongo initializers, plus it supports MONGO_CR.  It is the
preferred entry point for authentication in the C++ client, going forward.

The old ::auth() method remains and keeps its existing behavior.

Conflicts:
	buildscripts/smoke.py
	src/SConscript.client
	src/mongo/SConscript
	src/mongo/client/dbclient.cpp
	src/mongo/client/dbclientinterface.h
	src/mongo/scripting/v8_db.cpp
	src/mongo/tools/restore.cpp
	src/mongo/tools/stat.cpp
	src/mongo/tools/tool.cpp
	src/mongo/tools/top.cpp