Storing Categorical in DataFrame of different length gives inconsistent results
First, assigning a shorter Categorical into a longer DataFrame does something strange:

```
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3]})
df['b'] = 4
df['c'] = pd.Series([5, 6, 7, 8])
df['d'] = pd.Series([9])
df['e'] = pd.Categorical('foo')
```

If you `print df` it looks reasonable:

```
   a  b  c    d    e
0  1  4  5  9.0  foo
1  2  4  6  NaN     
2  3  4  7  NaN     
```

But if you do `df.iloc[1]` you get:

```
IndexError: index 1 is out of bounds for axis 0 with size 1
```

Next, try a Categorical longer than the DataFrame:

```
df['f'] = pd.Categorical(['foo', 'bar', 'baz', 'qux'])
```

This does not look right:

```
   a  b  c    d    e    f
0  1  4  5  9.0  foo  foo
1  2  4  6  NaN       bar
2  3  4  7  NaN       baz
                      qux
```

When we assigned a 4-element Series (`c`), the extra elements were truncated.  Yet a 4-element Categorical ends up with a "trailing value" which has no index and does not change `len(df)` (which is still 3, despite the appearance when printed).

I would expect the above code to give a result more similar to what you get if you use `Series` everywhere instead of `Categorical`, i.e.:

```
   a  b  c    d    e    f
0  1  4  5  9.0  foo  foo
1  2  4  6  NaN  NaN  bar
2  3  4  7  NaN  NaN  baz
```

In which case `df.iloc[1]` works:

```
a      2
b      4
c      6
d    NaN
e    NaN
f    bar
```

I'm using Pandas 0.18.1.
