James Hawkins : msi: Reimplement joins to allow joining any number of tables, each of arbitrary size.