PERF: optimize NaT lookups in cython modules
By making `NaT` a cdef'd object that we can cimport, we take a module-level lookup out of each check of `if obj is NaT`.  Since we tend to do this check a lot, avoiding these global lookups can get us some mileage:

```
In [3]: vals = np.array([pd.NaT for _ in range(10**6)])
In [4]: %timeit pd.to_datetime(vals)
```

master:
```
10 loops, best of 3: 33.1 ms per loop
100 loops, best of 3: 29.9 ms per loop
10 loops, best of 3: 25.8 ms per loop
10 loops, best of 3: 20 ms per loop
10 loops, best of 3: 31 ms per loop
10 loops, best of 3: 19.8 ms per loop
10 loops, best of 3: 26.6 ms per loop
10 loops, best of 3: 32.2 ms per loop
```

PR
```
10 loops, best of 3: 13.6 ms per loop
10 loops, best of 3: 20.6 ms per loop
10 loops, best of 3: 14.1 ms per loop
100 loops, best of 3: 14.7 ms per loop
10 loops, best of 3: 14.4 ms per loop
10 loops, best of 3: 20.9 ms per loop
10 loops, best of 3: 20.8 ms per loop
100 loops, best of 3: 16.6 ms per loop
```