JSON native support for datetime encoding

This adds support at the C level for encoding datetime values in JSON. I added a new parameter `date_unit` which controls the precision of the encoding, options are seconds, milliseconds, microseconds and nanoseconds. It defaults to milliseconds which should fix #4362.

I also added support for NaTs and tried to detect when numpy arrays of datetime64 longs are passed. 

Note that datetime decoding is still handled at the Python level but I added a date_unit param here too so timestamps can be converted correctly.

valgrind looks happy with the changes and all tests pass ok for me on Python 2.7 & 3.3