ENH: Enable DataFrame.get(key) to return the index if key not found in columns
## Problem

Sometimes, one would like to get a column regardless whether it was previously set as index.

Consider the following example:

```python
df = pd.DataFrame(np.arange(50).reshape(5,10).T, columns=list("ABCDE"))
df = df.set_index(["A","B"])
col = df.get("B")
```

In the above code `col` is set to `None`.


## Solution

I suggest to add an argument `include_index`, so that the following is possible:

```python
item = df.get("B", include_index=True)
```

It first checks the column names, and if not successful, continues searching the index names. It still returns None if no item was found. 

This permits simpler queries that combine indices and columns:

```python
mask = (df.get("B", include_index=True) > 15) & (df.get("C", include_index=True) > 20)
```

## Implications on API

Backwards compatibility is guaranteed by setting the default value of `include_index=False`.

The return type of `get(key, include_index=True)` is now Optional[Union[pd.Series, pd.Index]]. If `key` belongs to the index, a `pd.Index` must be returned. A conversion to `pd.Series` is infeasible.


## Alternatives

Currently, the idiomatic way to return either column or index is:

```python
def get_item(df, key):
    return df[key] if key in df else (df.index.get_level_values(key) if key in df.index.names else None)
```

