ENH: NaTType can be unpickled properly
Closes #4606. 

I'm not sure this also be a solution for #5388, but seems to be a workaround.

@sinhrks ok...this is ok for #4606 (though do you really need that separate function `_nat_upickle`?

This 'solves' #5388 but not for the right reason. This is of course object type, but _can_ represented if transposed into 'correct' blocks.

I am not sure what to do about this. Multi-dtypes have to be inserted into a Panel on only certain axes otherwise it forces `object`.

So pls pull out the tests for #5388. Let's keep that as a separate issue.

```
In [36]: wp.to_frame()
Out[36]: 
                              i1                   i2
major minor                                          
0     A                        1                    1
      B      2010-01-01 00:00:00  2010-01-01 00:00:00
1     A                        2                    2

[3 rows x 2 columns]

In [37]: wp.to_frame().dtypes
Out[37]: 
i1    object
i2    object
dtype: object

In [38]: wp.transpose(2,0,1).to_frame().dtypes
Out[38]: 
A            object
B    datetime64[ns]
dtype: object

In [39]: wp.transpose(2,0,1).to_frame()
Out[39]: 
             A          B
major minor              
i1    0      1 2010-01-01
i2    0      1 2010-01-01

[2 rows x 2 columns]
```
 merged via https://github.com/pydata/pandas/commit/2ada05408ea10050b0da825b716f6ba5c02f061b

thanks!
 Thanks to merge.

> though do you really need that separate function `_nat_upickle`?

I believe so, because `pickle` module search the function under the module namespace and raise `PicklingError` if it cannot find it.
 got it...thanks
