ENH: Support setting dataset name in to_hdf and datasets in hdf5 root node
#### Is your feature request related to a problem?

Pandas always calls the dataset in the hdf5 file `"table"`.
This is very inconvenient, when there are outside requirements on how the file should
look like and basically prohibits the use of pandas to write hdf5 in a predefined schema.

#### Describe the solution you'd like

Add a keyword argument `name` or `dataset_name` to `DataFrame.to_hdf` and `HDFStore.put`
to allow setting this name.

Also allow writing datasets into the root of a hdf5 file.
#### API breaking implications

None. The current defaults can be kept and only additional keyword arguments be added.

#### Describe alternatives you've considered

Currently the only alternative would be directly using pytables or h5py and
loosing all the great conveniences that come with using pandas.

#### Additional context

[add any other context, code examples, or references to existing implementations about the feature request here]

```python

import numpy as np
import pandas as pd


df = pd.DataFrame({
    'x': np.random.normal(size=500),
    'N': np.random.poisson(10, size=500)
})

df.to_hdf('test.hdf5', key='data', format='table', index=False, mode='w')
```

This creates a **group** "data" with a dataset "table" inside it.

What is the goal of this issue is to make it possible to create datasets of any name
and also without creating a group:
e.g.:
```python
df.to_hdf(
    'test.hdf5',
     key='/',  # or even ""
     name='data',
     format='table',
     index=False,
     mode='w'
)
```
should create a dataset called "data" in the root of the hdf5 file.

Currently, using an empty or "/" key, results in an error about wanting to remove the root node: 
```
  File "create_data.py", line 10, in <module>
    df.to_hdf('test.hdf5', key='/', format='table', index=False, mode='a')
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/pandas/core/generic.py", line 2505, in to_hdf
    encoding=encoding,
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/pandas/io/pytables.py", line 282, in to_hdf
    f(store)
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/pandas/io/pytables.py", line 274, in <lambda>
    encoding=encoding,
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/pandas/io/pytables.py", line 1042, in put
    errors=errors,
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/pandas/io/pytables.py", line 1657, in _write_to_group
    self._handle.remove_node(group, recursive=True)
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/tables/file.py", line 1806, in remove_node
    obj._f_remove(recursive)
  File "/home/maxnoe/.local/anaconda3/envs/ctapipe/lib/python3.7/site-packages/tables/group.py", line 1223, in _f_remove
    raise NodeError("the root node can not be removed")
tables.exceptions.NodeError: the root node can not be removed
```