Add support for joining entities, using a specific join-type

Currently, it is possible to specify a type (e.g. :inner) when doing a join 
with an explicit clause 
```clojure
(select "users" (join :inner "email" (= :email.users_id :id)))
```
When joining entities based on their <b>relation</b> as below, the type is defaulted to :left
```clojure
(select users (join email))
```
And it is not possible specify a type, i.e. not possible to do
```clojure
(select users (join :inner email))
```
I've enabled this and made the change so that the arglists look like so
```clojure
[query ent]
[query type ent] ;new
[query table clause]
[query type table clause]
```
I believe this is very helpful as it allows us to join entities using an arbitrary join-type, without having to repeat the join constraints from the rels that we already defined in defentity.