Changes
   * config.h has been 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.
   * The handling of MBEDTLS_CONFIG_FILE has been moved into build_info.h.
   * A config file version symbol, MBEDTLS_CONFIG_VERSION was introduced.
     Defining it to a particular value will ensure that mbedtls interprets
     the config file in a way that's compatible with the config file format
     used by the mbedtls release whose MBEDTLS_VERSION_NUMBER has the same
     value.
     The only value supported by mbedtls 3.0.0 is 0x03000000.
