ENH: Add unit keyword to Timestamp and to_datetime
to enable passing of integers or floats that are in an epoch unit of s, ms, us, ns
    (e.g. unix timestamps or epoch s, with fracional seconds allowed)

closes #3540

```
In [5]: pd.to_datetime(Series([ 1370745748 + t for t in range(5) ]),unit='s')
Out[5]: 
0   2013-06-09 02:42:28
1   2013-06-09 02:42:29
2   2013-06-09 02:42:30
3   2013-06-09 02:42:31
4   2013-06-09 02:42:32
dtype: datetime64[ns]
```

(I wonder if it makes it less ambiguous here to have the default unit for `to_datetime` as 'ns' rather than None?)
 they are both treated the same (but i'll change it in any event)
 actually...going to leav e it as None, becuase it doens' tapply in most cases and might be confusing?
 I was thinking that too, _but_ I think a little rewording may solve it, I was going to suggest something like:

```
unit : unit of the arg (s,ms,us,ns) if passed an epoch time # numerical?
    (e.g. a unix timestamp)
```
 ok...that's reasonable....sure
 @wesm any thoughts?
 This used to cause an exception, but maybe now is a good time for this to return NaT? :)

In your branch:

```
In [2]: pd.Timestamp(np.nan)
Exception ValueError: 'cannot convert float NaN to integer' in 'pandas.tslib.cast_from_unit' ignored
Out[2]: Timestamp('1970-01-01 00:00:00', tz=None)
```
 think I got all of the cases, thanks!

```
In [2]: Timestamp(np.nan)
Out[2]: NaT

In [3]: Timestamp(pd.NaT)
Out[3]: NaT

In [5]: Timestamp(pd.tslib.iNaT)
Out[5]: NaT

In [6]: Timestamp(float(pd.tslib.iNaT))
Out[6]: NaT
```
 @wesm ok API by you?
