While working on #72, I noticed some tests were broken.

There was 2 layers of error: first there were a handful of test errors due
to comparing naive and aware datetimes. I can't tell exactly what the purpose
of these tests was supposed to be (why compare a naive date to an aware date
in the first place?) but I fixed it by modifying the test to make the naive
date an aware date - if necessary - before comparison.

After fixing that, there was another test failure revealed where 34.123Z was
yielding 129999 microseconds instead of 130000 microseconds, due to lack of
floating point precision in dates.py:datetime_factory. I modified this function
to use integer math instead in order to get a precise result.
temp commit - planning to rebase