All mallocs should be checked now. Some notes for the next person to touch
this code, or do anything with malloc in Cython code:
* with gil: raise MemoryError() didn't work as expected, as a surrounding
nogil block catches and logs the exception, then proceeds as if nothing
happened.
* There were several opportunities for double free in the code. This is
handled by letting the destructor handle the freeing.
* Similarly, constructors failed to set pointers to NULL so __dealloc__
would try to free unitialized pointers.
* Out of memory might leave trees in an inconsistent state, but will not
cause a double free. A subsequent successful fit should produce a
consistent state, although I didn't test this.
* Replaced a free/calloc with a realloc; realloc(NULL, n) = malloc(n).
* free(NULL) is a harmless no-op per ISO C89.
Also performed an optimization: the pre-sort splitter was using size_t for
an array of booleans. unsigned char is faster and smaller.
Finally, fixed some cosmetic issues (long lines).