ENH20521 Added metadata argument to DataFrame.to_parquet 
The argument allows for custom file metadata updating the default one.
Closes #20521 

Checklist for other PRs (remove this part if you are doing a PR for the pandas documentation sprint):

- [x] closes #xxxx
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Checklist from comments:

- [ ] add example in to_parquet docstring
- [ ] add API docs
- [ ] investigate fastparquet
- [ ] correct kwargs
- [ ] add test for warning
- [ ] address other comments

Summing up:  pyarrow/pandas handling of file level parquet metadata is ugly and at some point of time should be rewritten but looks like it is a larger task than I can afford to do.

The above simple hack can be implemented by anyone interested on his/her own just instead of df.to_parquet
use function like this:
```
import pyarrow.parquet
def to_parquet_with_updated_metadata(filename, df, metadata_update):
    table = pyarrow.Table.from_pandas(df)
    updated_metadata = dict(table.schema.metadata or {}, **metadata_update)
    table = table.replace_schema_metadata(updated_metadata)
    pyarrow.parquet.write_table(table, filename)

to_parquet_with_updated_metadata('test.parquet', df, {'test key ': 'test value'})
```
Should be usable enough until proper solution with access to all metadatas in parquet file is developed.
This is why I closed this PR @JacekPliszka coming back to this: can you be a bit more specific in what is missing in pyarrow (or pandas) for properly handling of parquet metadata? 
Do you know if there is an issue for that on the pyarrow side? (or otherwise want to open one?) Is what you are looking for the ability to specify additional metadata in the `pyarrow.parquet.write_table` function? It's been couple months since I looked at it but parquet allows metadata at several levels - full file, column and page header.

It would be nice to have access to read and write at least the first two.

Firstly some kind of convention/format needs to be set how to separate library/pandas metadata from user controlled one.

Also there is issue of parquet datasets - individual files has each its own metadata while they are read as single pandas dataframe