Feature suggestion: flexible merge by function
It would be really convenient to allow the **on**, **left_on** and **right_on** arguments of **pandas.merge** being a function, with the following suggested signatures:

Arguments:
- **index** (pandas.Index)
- **row** (pandas.Series)

They will return an hashable object (of any dtype) to be compared against the other dataframe when doing the merge.

For example, you will be able to the the following:
`pd.merge(df1, df2, on_left = 'first_name', on_right = lambda index, row: parse_first_name(row['full_name']))`
This way, although **df2** doesn't have a **first_name** column (only **full_name**), it will be mergable with **df1** without any preprocessing step.

I would also like to suggest that leaving **on**, **left_on** and **right_on** with **None** would result the full Cartesian product of the two dataframes.
