BUG: don't allow an empty dataframe to have scalar assignment succeed (GH5744)
closes #5744
related #5720

I think this is the correct behavior

```
In [1]: df = pd.DataFrame(columns=['a', 'b', 'c c'])

In [2]: df['d'] = 3
ValueError: Cannot set a frame with no defined index and a value that cannot be converted to a Series

In [3]: df['c c']
Out[3]: Series([], name: c c, dtype: object)
```

Can we just allow the scalar assignment for an empty dataframe? 
It can be useful to add new columns dynamically.
A common use case for me is to read a data file using `read_csv` and then add some derived columns.
Checking that the read dataframe is not empty everytime before adding a new column could be tedious.
 @socheon 

in general working with a dataframe that does not have an index is very odd to begin with
if you have an index, then their is no problem

you can `read_csv` and then add a column with a scalar no problem

if you have an example of something you think ought to work, pls put it up
 @jreback 

At work, I receive daily many third party csv files (e.g. new orders etc) which I need to parse, add some derived columns, and then load into database. Occasionally, some of the files may be empty and just having the column names. For example

```
Date,ProductID,Quantity,UnitCost
01282013,1,10,3
01282013,2,5,6
```

To load into database, I simply use

```
from datetime import datetime
df = pd.read_csv('data.csv', dtype={'Date': 'object'})
df.Date = df.Date.map(lambda s: datetime.strptime(s, '%m%d%Y'))
df['TotalCost'] = df.Quantity * df.UnitCost
load_into_database(df)
```

But on some days when there are no orders i.e. the input file is just

```
Date,ProductID,Quantity,UnitCost
```

The program would break when adding new columns to empty dataframe. Of course, I could always
check `if len(df) > 0` before adding new columns. But somehow, I would still need to add the `TotalCost` column to the empty dataframe before passing it to the function `load_into_database`.

Anyway, the intended change will not a problem for me. Probably this example is too specific and has easy workaround.
 @socheon 

I hear ya!

just trying to guard against have an operation which looks like it succeeds, but actually doesn't do anything.

but I see that in 0.12 that was ok....

let me see...maybe I will revert back..
 @socheon alright...give a try with master again...and let me know (original behavior is restored)
 Thanks. I tried again and the master is good.
