Inconsistent Constructor Behavior 
#### Code Sample, a copy-pastable example if possible

```python
DF = pandas.DataFrame
S = pandas.Series
ll = [list(range(5)) for i in range(10)]
print(DF(ll).shape)
ld = [{j: j for j in range(5)} for i in range(10)]
print(DF(ld).shape)
dd = {i: {j: j for j in range(5)} for i in range(10)}
print(DF(dd).shape)
dl = {i: list(range(5)) for i in range(10)}
print(DF(dl).shape)
ls = [S(list(range(5))) for i in range(10)]
print(DF(ls).shape)
ds = {i: S(list(range(5))) for i in range(10)}
print(DF(ds).shape)
ss = S([S(list(range(5))) for i in range(10)])
print(DF(ss).shape)
sl = S([list(range(5)) for i in range(10)])
print(DF(sl).shape)
sd = S([{j: j for j in range(5)} for i in range(10)])
print(DF(sd).shape)
```
#### Problem description
There are kind of two separate issues here...

1. It seems strange to me that when a two dimensional object is passed to the DataFrame constructor, whether or not the object is interpreted as row by col or col by row is determined by whether or not the outer object is a dict or a list. If the outer object is a Dict, an MxN object will create an NxM dataframe. If the outer object is a list, an MxN object will create an MxN dataframe

2. It seems strange to me that the DataFrame constructor works well with lists of series and dicts of series but doesn't work with series of dicts, series of lists, or series of series.

#### Expected Output
Naively, I would expect the resultant DataFrame to be structured in the same way regardless of whether the object passed to the DataFrame constructor is a dict of lists, a dict of dicts, a list of lists, etc... All of the above calls to pandas.DataFrame should return equivalent dataframes IMO.

#### Output of ``pd.show_versions()``

<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.8.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.24.2
pytest: None
pip: 19.0.3
setuptools: 41.0.0
Cython: None
numpy: 1.16.3
scipy: 1.2.1
pyarrow: None
xarray: None
IPython: 7.4.0
sphinx: None
patsy: 0.5.1
dateutil: 2.8.0
pytz: 2019.1
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 2.2.2
openpyxl: 2.6.2
xlrd: 1.2.0
xlwt: None
xlsxwriter: 1.1.7
lxml.etree: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None
</details>
