isnull silently changes the frequency of the datetime index of a dataframe
There is no problem in doing pd.isnull on a series, but apparently in the case of a DataFrame the index frequency is converted silently.

If I have an index with freq=None isnull tries to infer the right frequency.
This is bad not only because one would expect that isnull does not modify the object in the call, but also because the inference of the frequency is imperfect and generates wrong results.

Here an example.
'2001-04-03' is tuesday, so the index is entirely in the same week

``` python
In [1]: import pandas as pd

In [2]: pd.__version__
Out[2]: '0.12.0'

In [3]: df = pd.DataFrame(randn(3,2), index=pd.to_datetime(['2001-04-03', '2001-04-04', '2001-04-05']))

In [4]: df.index  # Notice Freq: None
Out[4]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-05 00:00:00]
Length: 3, Freq: None, Timezone: None

In [5]: pd.isnull(df)
Out[5]:
                0      1
2001-04-03  False  False
2001-04-04  False  False
2001-04-05  False  False

In [6]: df.index  # Notice Freq: D
Out[6]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-05 00:00:00]
Length: 3, Freq: D, Timezone: None
```

In this case the index skips saturday and sunday and the conversion is to business day

``` python
In [7]: df2 = pd.DataFrame(randn(5,3), index=pd.to_datetime(['2001-04-'+x for x in ['03', '04', '05', '06', '09']]))

In [8]: df2.index
Out[8]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-09 00:00:00]
Length: 5, Freq: None, Timezone: None

In [9]: pd.isnull(df2)
Out[9]:
                0      1      2
2001-04-03  False  False  False
2001-04-04  False  False  False
2001-04-05  False  False  False
2001-04-06  False  False  False
2001-04-09  False  False  False

In [10]: df2.index  # Notice Freq: B
Out[10]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-09 00:00:00]
Length: 5, Freq: B, Timezone: None
```

This is the tricky case: the index is business days except the 15 which is
sunday. isnull converts this to business days and generates a fake line full
of nans corresponding to the 13 (which is friday)

``` python
In [11]: df3 = pd.DataFrame(randn(9,3), index=pd.to_datetime(['2001-04-'+x for x in ['03', '04', '05', '06', '09', '10', '11', '12', '15']]))

In [12]: df3.index
Out[12]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-15 00:00:00]
Length: 9, Freq: None, Timezone: None

In [13]: pd.isnull(df3)
Out[13]:
                0      1      2
2001-04-03  False  False  False
2001-04-04  False  False  False
2001-04-05  False  False  False
2001-04-06  False  False  False
2001-04-09  False  False  False
2001-04-10  False  False  False
2001-04-11  False  False  False
2001-04-12  False  False  False
2001-04-15  False  False  False

In [14]: df3.index  # Notice Freq: B
Out[14]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2001-04-03 00:00:00, ..., 2001-04-15 00:00:00]
Length: 9, Freq: B, Timezone: None

In [15]: pd.isnull(df3)  # The 15 is replaced by the 13 with nans
Out[15]:
                0      1      2
2001-04-03  False  False  False
2001-04-04  False  False  False
2001-04-05  False  False  False
2001-04-06  False  False  False
2001-04-09  False  False  False
2001-04-10  False  False  False
2001-04-11  False  False  False
2001-04-12  False  False  False
2001-04-13    NaN    NaN    NaN
```
