Support for .join(table, raw) and join using

Adds support for `.join(tableName, rawQuery)` as well as 

```
.join(tableName, function() { 
   this.using(table); 
})
```

The case that brought it up was that

```sql
.innerJoin('buildings_building', knex.raw('ST_Contains(buildings_pluto.geom, ST_Centroid(buildings_building.geom))'))
```
would output:

```sql
inner join buildings_building
on ST_Contains(buildings_pluto.geom, ST_Centroid(buildings_building.geom))
```

On the second, I forget, I think someone brought up using as a potential join feature somewhere.

Tests added & pass but figured another set of eyes on it might be good, @vschoettke or @bendrucker?