Create a unit test harness

The unit test harness can be used to create and run unit tests. It
comes with tests for its test assertions.
Output JUnit-style XML when running tests

Exporting JUnit-style XML is useful when using various external unit
testing tools, like Jenkins.
Report the time spent in tests

We track each test's time (for JUnit-style XML purposes) and also the
total running time of all the tests.
Make test asserts use ptrdiff_t

This will allow us to compare any pointer-sized types. int wasn't big
enough for 64-bit points on LP64 systems, like 64-bit Linux.
Make output more readable by adding newlines

Previously, when multiple tests failed, the error message output was all
clumped together and hard to read. By adding some newlines, the output
is now easier to read.
Fail with longjmp instead of return 1

This allows us to test complex things better (e.g. things where a
function is called that returns an error status, but the error status
isn't checked). Sometimes when testing complex things that don't check
error status, tests will mistakenly pass, even though an assertion
failure message is shown in the test log. Using longjmp allows us to
reliably fail in such cases.

Using longjmp has the added benefit that we can now fake out functions
that don't return error codes. Because of this benefit, our tests
themselves don't need to return anything anymore. So, This commit
additionally makes all existing tests return void.
Allow expressions in test asserts

Our previous test assert macros did not allow expressions to be used
without generating type warnings. This commit wraps the parameters to
our test assert macros with parenthesis so that the ptrdiff_t cast can
eliminate any type warnings.
Add TEST_MEM_EQ

Add a memory comparing test macro. It will give a pretty test failure
message, showing where in the two buffers memory differs along with some
context information. This is better than using memcmp or hand made loops
because those tools don't provide as pretty test failure messages.
Don't use "\e"

It's a non-standard escape code.
Simplify the project structure

Instead of a test folder, we can just be flat. This makes us nicer to
use as a submodule.
Add a Makefile

This will make it easy to try out the sample test_main.c test runner.
Just run "make".
Clear the line after failure location

Previously, we could end up with the test failure location overlaid on
top of a long test name. This was ugly and hard to read. Now we clear
the rest of the line after printing the test failure location.