29213: Dataframe Constructor from List of List and non-iterables
- [x] closes https://github.com/pandas-dev/pandas/issues/29213
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

---
## What
Whilst the original issue is from the factory method `DataFrame.from_dict(d, orient='index')`, the main issue is the *order* of elements within the list in the main constructor:

For example:
```
pd.DataFrame([[1, 2, 3], 4])  # doesn't work
# TypeError: object of type 'int' has no len()

In [2]: pd.DataFrame([4, [1, 2, 3]]) # works, creates a 1D DataFrame
Out[2]:
           0
0          4
1  [1, 2, 3]
```



## Current Constructor Logic on List Argument
- Current logic looks at the [first element](https://github.com/pandas-dev/pandas/blob/master/pandas/core/frame.py#L462-L465), and *infers* that all other elements are iterables as well.
    - if all elements in the list are iterables, it generates a 2D DataFrame.
    - if any element from index-1 onwards is a non-iterable, it doesn't have a len() method and fails.

## Proposed Solution
- Based on the first element, *try* to infer that all elements are iterables as well.
    - If not all subsequent elements are iterables, then return 1D DataFrame. This would be the same behaviour as it would have been if the first element in the list is non-iterable.
    - This should not have performance degradation as there is noneed to check if all elements in the list are iterables.


## Note
- This does not solve the issue whereby we have iterables of different types (such as lists and strings...)
```
In [2]: pd.DataFrame([[1, 2, 3], 'foobar'])
Out[2]:
   0  1  2     3     4     5
0  1  2  3  None  None  None
1  f  o  o     b     a     r
```