Security
   * Add the platform function mbedtls_setbuf() to allow buffering to be
     disabled on stdio files, to stop secrets loaded from said files being
     potentially left in memory after file operations. Reported by
     Glenn Strauss.
Requirement changes
   * The library will no longer compile out of the box on a platform without
     setbuf(). If your platform does not have setbuf(), you can configure an
     alternative function by enabling MBEDTLS_PLATFORM_SETBUF_ALT or
     MBEDTLS_PLATFORM_SETBUF_MACRO.

