- Upgrades actions using Node.js 12 to versions using Node.js 16.
- Updates deprecated set-output command.
- Specifies more specific version of CMake on macOS runner.
Only restore git submodules if we have an exact match, otherwise we will
restore outdated submodules over newer ones, then save the outdated
version with the exact match after.