ENH: Add orient=tight format for dictionaries
- [x] xref #4889 (see below)
- [x] tests added / passed
  - tests.frame.methods.test_to_dict.test_to_dict_orient_tight()
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

The issue in #4889 contains examples of how the JSON format doesn't support `MultiIndex` for the index or the columns, independent of the `orient` chosen.  Also, none of the orientations support index names (or `MultiIndex` names).  Finally, if you want to have a JSON format that is "tight" (or "compact"), the `split` is the closest thing, but it is incomplete due to the indexing issues.

As a first step to addressing this, I have created a `orient='tight'`  option to `DataFrame.to_dict()` and `DataFrame.from_dict()` .  If we agree that this is a reasonable representation, the next step (which I'd prefer to do in a second PR) would be to also support it with JSON.  The challenge there is that `to_json()` is currently implemented in C.  Right now, one can just use `json.dumps(df.to_dict(orient='tight'))` to get the needed JSON as a workaround.

I'm open to changing the word `'tight'` to something else, but I wanted it to start with a different letter than the other orientations.