ENH: Preserve key order when passing list of dicts to DataFrame on py 3.6+
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Related to #25915,  #26587, #24859, #26113, #10056 (orderedicts), #11181/#11416 (list of namedtuple).  #25911.

**Update**: #13304/#13309 Was merged three years ago so let's just make list of dicts act like list of OrderedDict (as pointed out by @jorisvandenbossche).

**Actual**
```python
In [63]: data= [
    ...: {'name': 'Joe', 'state': 'NY', 'age': 18},
    ...: {'name': 'Jane', 'state': 'KY', 'age': 19}
    ...: ]
    ...: pd.DataFrame(data)
Out[63]: 
   age  name state
0   18   Joe    NY
1   19  Jane    KY
```
**Expected**
```
In [64]: pd.DataFrame(data)
Out[64]: 
   name state  age
0   Joe    NY   18
1  Jane    KY   19
``` 
<del>
Four years ago, #10056 asked for the implied order of columns in a list of `OrderedDict` to be preserved by the `DataFrame` constructor. @thatneat  [commented](https://github.com/pandas-dev/pandas/issues/10056#issuecomment-509383829) yesterday that with 3.7 guaranteed dict order, this should extend to dict-like in general. I think users have a reasonable expectation for this to work, and therefore that pandas should support it. @jreback [voted](https://github.com/pandas-dev/pandas/issues/10056#issuecomment-98812435) +0 on adding this (four years ago).
 
`namedtuple`  has the convenient property of homogeneous keys and key-order which a list of dicts
doesn't have, dicts are allowed to omit keys, and the key order also may change from dict to dict.
Given that, I settled on a reasonable compromise that matches user expectations in practice:
1. Only look at the first dict in the list.
2. Only guarantee the column order of the keys which actually appear in it.
3. **Clarification** the order among columns not included in the first dict is undefined, except that they will appear after all the columns that do.
4. **Added** Changes apply to Python3.6+ only

In practice, I think the only case users actually care about is sensible behavior when passing a list of dicts which is homogeneous in terms of key and key-order, which this PR provides.
</del>