Add tests, implement multi-ids, tests_return_val

This is a huge commit (sorry git gods). Also split the interface into
functions relating to `TestAssertion` and functions relating to `Test`,
so that people can just use `assertion.h` if that's all they want (i.e.
`assertion.h` does not depend on `test.h`).
Change printing a bit, improve numbers example