Split the wiredtiger_open configuration options into four sets:

1. what the application can specify in the wiredtiger_open call,
2. the values allowed in the base-configuration file (same as the first
   set but with create, exclusive and use_environment_priv stripped out
   and version added),
3. the values allowed in the user-configuration file (same as the first
   set but with create, exclusive and use_environment_priv stripped out),
4. a superset of all possible wiredtiger_open configuration options.

Modify the various tests to use the right configuration values.

Add a version number to the base configuration file.
Don't track only "changes" from the wiredtiger_open() configuration
string to store in the base configuration file, track changes from the
configuration environment variable and the user-configuration file as
well.

Update the error configuration after reading all of the possible
configuration sources, it might have changed.

Don't write the base configuration file until completing configuration
completes (for example, after loading the extensions successfully), we
could end up writing configuration information that's going to fail.

If creating the base configuration file fails for any reason, remove it.

Move a little mainline code into __conn_config_file, it simplifies some of
the logic around the base configuration file existing.
Merge branch 'develop' into basecfg-version
Merge branch 'develop' into basecfg-version
Merge branch 'develop' into basecfg-version
Add a check for an incompatible version in any configuration string,
and fail if it's a future release.
Add support for upgrading configuration strings: leave the obsolete
version in the configuration list, but undocumented, and translate it
to the new version by appending to the configuration string where the
obsolete version was specified.

Use "lsm_merge=boolean" as the example.
Merge branch 'develop' into basecfg-version
The upgrade configuration string is the same string to which we're
appending new configuration options, clarify that by only using one
parameter.
Add some comments explaining the different wiredtiger_open configuration
string variants.
Add a page on upgrading.
whitespace
Merge branch 'develop' into basecfg-version
Add more wording on upgrade/downgrade of databases.

Add "config_base" configuration string to wiredtiger_open, controls the
creation of the base-configuration file.

Add a test, merge test_isnew.py and test_gethome.py plus the new test
into test_home.py.:
MSVC doesn't yet support "%zu", replace with #defines.
Merge pull request #1274 from wiredtiger/basecfg-version

Basecfg version
Handle @subpage_single the same as @ref_single in the docs, for cases where a multi-language page references a single-language page.
Include the trailing NUL when copying a config string.
Add changelog for 2.4.0
Add section about basecfg update.