Support for multiple joins

Allows you to execute joins on records which match a number of values between the tables. This functionality is implemented in a backwards compatible manner to prevent breaking node-orm2, pending changes on that branch which make use of this functionality.

This allows queries like the following to be generated
```sql
SELECT * FROM `table1` `t1` JOIN `table2` `t2` ON `t1`.`id1` = `t2`.`id1` AND `t1`.`id2` = `t2`.`id2`
```

This change is necessary to allow the implementation of support for multiple primary keys on models in node-orm2, something I'm currently working on finishing in [SPARTAN563/node-orm2:smart_associations](/SPARTAN563/node-orm2/tree/smart_associations)