Refactor: Eliminate duplicated file/line/msg sets by calling FAILm.
Replace several set-to-0s with a memset, eliminate a useless comparison.
Add ASSERT_EQUAL_T[m], for type-specific equality assertions.

Still experimental; rebase and bump version when integrating.
Check and fail if type_info->equal callback is NULL.
Add documentation for ASSERT_EQUAL_T assertion.
Add note about disabling abbreviations.
Ensure ASSERT_EQUAL_T uses fprintf(GREATEST_STDOUT, ...) not printf.
Remove GREATEST_ASSERT_EQ_CB, replaced by GREATEST_ASSERT_EQUAL_T.

GREATEST_ASSERT_EQ_CB was unintentionally released as part of another
commit, while its API was still being designed, and was never documented.
example: Print boxed int as {int}.
Update docs for ASSERT_EQ to suggest ASSERT_EQUAL_T for struct comparisons.
Eliminate unnecessary `greatest_info.msg = NULL;` lines.
Update year on copyright.
Extract most of ASSERT_EQUAL_T into function to reduce generated code.

Also, change the void *exp and *got arguments to (const void *) to
avoid warnings when they are const values.
Use proper subsection markdown in README.md
Add a few comments to the example test suite.
delete-trailing-whitespace
Add comments.
Add comments about test runner return value and related theft project.
Refactor: Eliminate duplicated file/line/msg sets by calling FAILm.
Replace several set-to-0s with a memset, eliminate a useless comparison.