SERVER-9518 Remove implicit privilege acquisition member from Principal class
SERVER-9518 Separate cases that want to automatically acquire privileges when adding an authenticated principal from those that do not.

Conflicts:
	src/mongo/db/auth/authorization_session.cpp
SERVER-1891 Add audit logging hooks for authorization checks in mongod.

Conflicts:
	src/mongo/base/error_codes.err
	src/mongo/db/instance.cpp
SERVER-1891 Add redactForLogging() to Command.

Command::redactForLogging(mutablebson::Document* cmdObj) transforms "cmdObj"
into a form suitable for writing to logs.  This patch provides a sample
implementation for the user management commands that censors password fields,
and updates the audit hook for commands, appropriately.

Conflicts:
	src/mongo/db/commands.h
	src/mongo/db/commands/user_management_commands.cpp
SERVER-1891 Add hooks to audit authentications using MONGODB-CR and MONGODB-X509.

Conflicts:
	src/mongo/db/auth/action_types.txt
SERVER-9518 Add UserSet class to eventually replace PrincipalSet
SERVER-9518 Fix mongos implementation of functions to get database names and user objs for a database
SERVER-9518 Don't override internal security user if there's a user doc with the same name
SERVER-9518 Remove UserName argument from grantInternalAuthorization

Conflicts:
	src/mongo/db/index_rebuilder.cpp
	src/mongo/db/range_deleter_db_env.cpp
	src/mongo/db/repl/write_concern.cpp
	src/mongo/db/ttl.cpp
SERVER-6246 Add removeUsers command
SERVER-6246 Restrict direct removes from system.users, add a shell helper to use the removeUser command, and update tests to use the helper

Conflicts:
	jstests/auth1.js
	jstests/connection_status.js
	jstests/profile3.js
	jstests/profile4.js
	jstests/sharding/authmr.js
	jstests/sharding/authwhere.js
SERVER-9518 Remove unnecessary mock from authorization_session_test

Conflicts:
	src/mongo/db/auth/authorization_session_test.cpp
SERVER-9518 Take global lock before reading all database names
SERVER-9518 Maintain UserSet alongside PrincipalSet.

Conflicts:
	src/mongo/db/auth/authorization_session.cpp
SERVER-6246 In smoke.py, use command to create user, rather than direct insert to system.users

Conflicts:
	buildscripts/smoke.py
	src/mongo/db/auth/authorization_manager.cpp
SERVER-6246 Fix unused variable error in non-debug builds
SERVER-9518 Make sure all users have been released in unit test so that ref count assertion doesn't fail
SERVER-9518 Make sure internal user stays in the user cache
SERVER-10475 SERVER-9518 Avoid dassert when running authorization_manager_test by making sure the internal user's refCount gets to zero before the AuthorizationManager is destroyed
SERVER-9518 Handle otherDBRoles when initializing User object from V1 privilege documents