ENH: conditional merge - initial concept
- [ ] closes #8962
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

This is an initial implementation of a conditional join proposed here: https://github.com/pandas-dev/pandas/issues/8962#issuecomment-871958622

This is by no means meant to be a final solution, but just meant to get some momentum behind the feature. 

The following issue provides the proposed initial implementation and examples for the usefulness an optimized version of this feature could provide: https://github.com/pandas-dev/pandas/issues/41150

Example Usage:

```
Merge dataframes df1 and df2, where column df1.timestep falls within the range
of df2.timestart to df2.timeend, using `condition`.

>>> df1 = pd.DataFrame({'timestep': range(5)})
>>> df2 = pd.DataFrame({'mood': ['happy', 'jolly', 'joy', 'cloud9'],
                        'timestart': [0, 2, 2, 3],
                        'timeend': [1, 3, 4, 4]})
>>> df1
   timestep
0         0
1         1
2         2
3         3
4         4
>>> df2
     mood  timestart  timeend
0   happy          0        1
1   jolly          2        3
2     joy          2        4
3  cloud9          3        4
>>> df1.merge(
...     df2,
...     condition=lambda dfx: (dfx.timestart <= dfx.timestep)
...                           & (dfx.timestep <= dfx.timeend)
... ).pivot_table(index='timestep', values='mood', aggfunc=', '.join)
                        mood
timestep                    
0                      happy
1                      happy
2                 jolly, joy
3         jolly, joy, cloud9
4                joy, cloud9
```