ERR: GH9513 NaT methods now raise ValueError
This is to close #9513. `NaT` methods now raise `ValueError` or return `np.nan`.

Just a question: isn't it also a possibility to let it return `np.nan` ? Because now you get different results depending on if you access the date on a full index/series, or on a single element of that index/series
 That makes sense. So leave `weekday` unchanged, and have `date` and `time` return `nan`? Unsure about `toordinal` though. 
 @jreback tests are green. 
 I think I would still prefer to raise for date and time. It's one thing to return nan for methods/attributes that return numbers, but nobody expects that for a method that is supposed to return these specific types. 
 @shoyer and what with the attributes that don't return a number but a specific date/time object?
 hmm, we _could_ return `NaT` itself for `date/time` e.g.

```
def date(self):
    return self
```

```
In [8]: Timestamp('20130101').date()
Out[8]: datetime.date(2013, 1, 1)

In [9]: Timestamp('NaT').date()
Out[9]: NaT
```

The idea being is that you asked for a `date/time` you get a python object (as pandas does'nt have a specific date/time object specifically), but you have a missing value, so you get an object that represents a missing value (just typed to the missing value)
 That makes perfect sense for `date`. But `time` is a different type, so I think users can still be surprised by `NaT`.
 Technically, datetime is a subclass of date, not the other way around. It think it's better just to raise an error as opposed to guessing an appropriate sentinel value.
 Most likely updating tonight.  Any verdict on raising vs returning `nan` or `NaT`?
 right

I think things that have date should be NaT eg
date,now,today

I am ok with time be Nat as well -even though it pushes the semantic boundaries 

number like should be nan (eg weekday)
ordinal should prob raise 
 > I think things that have date should be NaT eg
> date,now,today

Agreed. NaT is a datetime instance and also a date instance.

> I am ok with time be Nat as well -even though it pushes the semantic boundaries

I disagree. NaT is not a time instance. We should not return it from a method which promises to return a time.

> number like should be nan (eg weekday)
> ordinal should prob raise

Agreed.
 ok, so the suggestion is to raise for `time`. Ok not adverse to that.
 updated
 updated
 ok lgtm

@jorisvandenbossche @shoyer comments?
 Lgtm 
 Updated again. Moved the list concatenation outside the loop.
 lgtm, @shoyer if ok to you, pls merge.
 Merged via c87fa18cc22c15d37c023581fad9a46fff31534d
