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.
