Add a string representation of the ChChar

This is generally useful, and we'll use it in an error case
of the unit tests.
Allow testing equality of two ChChar instances

Among other things, this allows writing very simple unit tests.
tests: Add the testing infrastructure
tests: Ensure pycangjie provides expected results

We do not want test that the results from pycangjie are actually
correct, only that they are are identical to the results from
libcangjie.

Correctness must be guaranteed by libcangjie, so that everybody
benefits.

The tests implemented here rely on libcangjie_cli: we run it for every
possible input code, and check that we obtain the same results with the
pycangjie API.

libcangjie_cli is linked directly against libcangjie, and is provided by
libcangjie upstream, so we should be able to trust its results.

However, we scrape its standard output to compare with our results,
which is quite fragile, but it is all we have at the moment.
Better management of the C++ objects

We were never deallocating the C++ objects, and as such
we were leaking both memory and file descriptors.

This was uncovered thanks to the new unit tests, which is already a
pretty good justification for having them. :)
Fail fast on UTF-8 issues

This is one more bug which was uncovered by the unit tests.

/me loves unit tests.
tests: Don't break distcheck