Add a testing.pyx cython file, and port assert_almost_equal() from
python to cython.
On my machine this brings a modest gain to the suite of "not slow" tests
(160s -> 140s), but on assert_almost_equal() heavy tests, like
test_expressions.py, it shows a large improvement (14s -> 4s).
Many of the edge cases were related to ordering of the items, but in
some cases there were also issues with type checking. This fixes both
of those issues and massively expands the testing for this function.