For consistency with other bundled dependencies. Having it in the top-level directory makes it clear that it is a library that we’re including rather than a file that is a part of the project.
tinyformat/tinyformat.h and tinyformat/README.md are drawn from the existing sha reference: https://github.com/c42f/tinyformat/tree/689695cf58700e6defe3741829564cd682d5ae57
Existing modifications to tinyformat are moved to utilstrprintf.h, clearly separating upstream and project code.
This includes changes in:
695041e4952ea40e0 - util: Update tinyformat
1b8fd35aadfad6a1e - Make tinyformat errors raise an exception instead of assert()ing
9b6d4c5cdc1ad7b12 - Move strprintf define to tinyformat.h
6e5fd003e04b81115 - Move *Version()
functions to version.h/cpp
9eaa0afa6ec5d3dd0 - tinyformat: force USE_VARIADIC_TEMPLATES
b651270cd6bfdd6d7 - util: Throw tinyformat::format_error on formatting error
This does not include changes below, which are cosmetic or apparently unintentional: 64fb0ac016c7fd01c - Declare single-argument (non-converting) constructors “explicit” 4d9b4256d89d1f7c6 - Fix typos
Note I excluded only the tinyformat cpp from the boost lint checks out of an abundance of caution - these files are not actually built into bitcoin so are not at risk of pulling in unwanted dependencies, whereas the header, and other dependencies might be.