Allow explicit SQL joins to expressions

Currently you can join expressions (such as `Path` interface) only through implicit join in a `FROM` clause. Many database engines (e.g. PostgreSQL) have trouble with mixing explicit and implicit joins so the user should always have a choice between them.

Example use case:

```
final PathBuilder<Tuple> path = new PathBuilder<>(Tuple.class, "some_alias");
query.withRecursive(
    path,
    field1,
    field2
).as(
    sq().unionAll(
        someSubQuery,
        sq().from(someTable).join(path).on(...).leftJoin(...).on(...)
    )
)      
```

Explicit join in a subquery is required for it to work correctly on Postgres.