ENH: Let initialisation from dicts use insertion order for python >= 3.6 (part III)
- [x] closes #19018
- [x] xref #19830 and #19859
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

This PR lets pandas allow initialisation using insertion order for python>=3.6. E.g. ``Series({'B': 1, 'A': 2})`` will retain order and not convert to ``Series({'A': 2, 'B': 1})``. As such this changes the API soemwhat fundamentally (but in a very good way, IMO).

Some questions:
* Should this change be at the top of the whatsnew, in order to increase visibility to this change?
* Should an option be added to ``pd.options``, so user can revert back to the old behaviour? I'm thinking here of users who have made tests based on dict sort-by-values, and whose tests will break by this new change
* Should there be a deprecation procedure, as asked by @gfyoung ?

I also need to look thorugh the documentation if changes should be made there, but would appreciate getting the basic PR approved first.