Rename ‘Input’ to ‘Expectation’.

I think this makes it clearer that the input value is an expectation that can itself include both input values and expected output values.
Add Doxygen-based documentation generation.
Documentation improvements (caught by Doxygen).
Be explicit about std::function here.

Doxygen can’t match this up with std::function unless we use the namespace, and it’s slightly clearer for programmers too.
Expand long line out into multiple lines.
Ignore unknown documentation commands.

Doxygen understands the @internal command but Clang doesn’t.
Use code fences that Doxygen can understand.