Function for merging tables according to registered broadcasts

Example from the tests:

```python
sim.broadcast('a', 'b', cast_index=True, onto_on='a_id')
sim.broadcast('z', 'b', cast_index=True, onto_on='z_id')
sim.broadcast('b', 'c', cast_index=True, onto_on='b_id')

merged = sim.merge_tables('c', [dfa, dfz, dfb, dfc], columns=['a1', 'b1', 'z1', 'c1'])
```

Where `dfa`, etc. are the wrapped DataFrames with names `'a'`, etc.