Introduce a level of indirection and versioning in the config files

config.h was split into build_info.h and mbedtls_config.h. build_info.h is intended to be included from C code directly, while mbedtls_config.h is intended to be edited by end users wishing to change the build configuration, and should generally only be included from build_info.h. This is because all the preprocessor logic has been moved into build_info.h, including the handling of the MBEDTLS_CONFIG_FILE macro.

Config file symbols MBEDTLS_CONFIG_VERSION and MBEDTLS_USER_CONFIG_VERSION were introduced for use in MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE respectively. Defining them to a particular value will ensure that mbedtls interprets the config file in a way that's compatible with the config file format indicated by the value. The config file versions are based on the value of MBEDTLS_VERSION_NUMBER of the mbedtls version that first introduced that config file format. The only value currently supported is 0x03000000.