Rearrange _NaT to be valid python; add attributes tests
At the moment the organization of `tslib` is not valid python: child classes are defined above parent classes.  This PR fixes that for `_NaT` and `NaTType`.

This is necessary because trying to implement more important changes in `NaTType` is leading to build errors:

```
pandas/_libs/tslib.c:103540:3: error: use of undeclared identifier '__pyx_base'; did you mean '__pyx_k_base'?
  __pyx_base.nanosecond = __pyx_t_12;
```

_Hopefully_ fixing this will fix the build error.

This also implements tests for NaT namespace/docstrings.

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
