ENH: pd.link([*dataframes], how='left')
#### Is your feature request related to a problem?
When working with data that contains a lot of references, pd.merge seems to be the best approach.

If you need to follow more than 1 reference to get where you need, this quickly gets verbose.

To solve this problem, I suggest a higher level wrapping for merge, that is focused around being able to follow multiple references. Some potential names are:
```py
pd.link([*dataframes])  # The one I use in the examples below
pd.follow([*dataframes])
pd.traverse([*dataframes])
```

#### Describe the solution you'd like

Example implementation below:

```py
from functools import reduce
import pandas as pd

def link(dataframes, how='left'):
    """
    Follow references in between pandas dataframes and series.
    
    Parameters:
    -----------
    `values` is an iterable of pd.DataFrame or pd.Series.
    `how` decides how the internal pd.merge will be performed.
    """
    def _link(x, y):
        # Support for passing in pandas series
        if type(x) == pd.Series:
            x = x.to_frame()
        if type(y) == pd.Series:
            y = y.to_frame()
        return pd.merge(x, y, left_on=list(x.columns), right_index=True, how=how)[y.columns]
    return reduce(_link, dataframes)
```


### Example

![image](https://user-images.githubusercontent.com/410028/100298345-2efc9280-2f91-11eb-808c-2f8b684977bb.png)

#### And for the variables used:

<details><summary>user_to_session_id</summary>

![image](https://user-images.githubusercontent.com/410028/100298042-5e5ecf80-2f90-11eb-9598-0be86835d54c.png)

</details>

<details><summary>session_id_to_article_id</summary>

![image](https://user-images.githubusercontent.com/410028/100298111-8bab7d80-2f90-11eb-9172-b871ecd25b28.png)

</details>

<details><summary>article_id_to_price_usd</summary>

![image](https://user-images.githubusercontent.com/410028/100298221-d6c59080-2f90-11eb-8bf5-dfb804160f16.png)

</details>

---

<details><summary>Code</summary>

```python
sessions = pd.DataFrame({
    'session_id': ['a', 'b', 'c', 'd'],
    'user': ['jack', 'jack', 'john', 'steve'],
})
user_to_session_id = sessions.set_index('user')

orders = pd.DataFrame({
    'session_id': ['a', 'b', 'c', 'c'],
    'article_id': ['x', 'x', 'y', 'x']
})
session_id_to_article_id = orders.set_index('session_id')

articles = pd.DataFrame({
    'article_id': ['x', 'y'],
    'price_usd': [25, 50]
})
article_id_to_price_usd = articles.set_index('article_id')

link([
    user_to_session_id,
    session_id_to_article_id,
    article_id_to_price_usd
])
```

</details>

### Notes
This could be created to only support pd.Series - but then this prevents us from merging multi-index frames/series. For merging multi-index data, we need a multi-column frame to match the index.