BUG: passing columns and dict with scalar values should raise error
Fixes [GH10856](https://github.com/pydata/pandas/issues/10856).

``` Python
>>> pd.DataFrame({'a':0.1}, columns=['b'])
ValueError: If using all scalar values, you must pass an index
```

Trying to raise this error was slightly trickier than I anticipated - this was the only way that didn't break existing tests. If no index is passed to the constructor, `extract_index` is called to check whether the dictionary contacts only scalar values (and raises the ValueError if so).

This check now happens _prior_ to preselecting any columns. If people are happy with this approach I can write tests for the PR.

seems reasonable. Pls add the test in of course! 
and a release note. squash / ping me when green.
 @jreback: added the test and note and checks are green.
 @jreback the discussion we had during the sprint is the following: although this patch fixes the actual reported issue (raising a ValueError when a scalar dict is passed), this also introduces another inconsistency in some way:

```
In [25]: pd.DataFrame({'a':[0.1]}, columns=['b'])
Out[25]:
Empty DataFrame
Columns: [b]
Index: []
```

In the above case, **first** the 'reindexing' of the dict on the columns is done, ending up with an empty dict, leading to an empty dataframe with columns but **no** index (so ignoring the index that would have been created from the original data). 
So if you apply the same logic on the case in this issue, you also end up with an empty dict, but in this case the index is not ignored, as you still raise an error because the _original_ data would cause an error when constructing an index from that.

But there is not really a clear correct solution I think (and it is also rather a cornercase), so I am fine with merging this.
 thanks guys. catching all of these corner cases is tricky.
