Clarify that test flags should be minimal hooks into internal
functionality, not contain test logic. All test logic (assertions,
validation) belongs in Bash test scripts in tests/.
This addresses the ambiguity mentioned in issue 109 regarding
the distinction between test hooks in main.cpp and test scripts.
Add a new Error Handling section documenting the project's error handling
conventions using std::expected:
- JSON parsing must use parse_json_safely()
- JSON deserialization must use json_to<T>()
- No try/catch blocks — handle std::expected explicitly
- No new exceptions allowed
- Error handling uses std::expected<T, std::string> exclusively
- Library code returns std::expected; expect_or_exit() for top-level code only
Also update C++ version requirement from C++20 to C++23 in Prerequisites.
Fixes: #53