Tests now pass for arrays of dtype datetime64

* If the array if of dtype datetime64 the 1st order edges and
2nd order interior differentiation is used.

* For all other dtype 2st order edges and 2nd order interior
differentiation is used.

* This is non-ideal because it means that datetime64 dtype
miss out on the higher accuracy. However tests do not pass
when using the higher accuracy method because an error is
thrown when datatime64 datatypes are multiplied by a float.