left_outer_join doesn't works as expected
The `left_outer_join()` method is implemented on a lower-level of the query-builder and does not take into account important aspects of the model layer.

You should stick to using the standard ways of doing things, namely `.join()` when using models.
I do not know, if i am doing something wrong, but query with `left_outer_join()` doesn't work for me. I can reproduce it with this simple example:
```python
import peewee as pw

DBFILE = ":memory:"
db = pw.SqliteDatabase(DBFILE, pragmas={'foreign_keys': 1,})

class BaseModel(pw.Model):
    class Meta:
        database = db

class Domains(BaseModel):
    id = pw.PrimaryKeyField(null=True)
    dname = pw.TextField()

class DAliases(BaseModel):
    dalias = pw.TextField()
    domain = pw.ForeignKeyField(Domains)
```
Simple `join()` works without problems:
```python
q = (Domains
     .select()
     .join(DAliases, pw.JOIN.LEFT_OUTER)
     .where(Domains.id==1)
    )
```
But when i replace `join()` with `left_outer_join()`:
```python
oq = (Domains
     .select()
     .left_outer_join(DAliases)
     .where(Domains.id==1)
    )
```
It throws exception:
```python
Traceback (most recent call last):
  File "pwerr.py", line 36, in <module>
    oq = (Domains
AttributeError: 'Join' object has no attribute 'where'
```
I am surprised, because in source i see, that `left_outer_join()` returns the same object as `join()`, the difference is only in predefined `join_type`... Am i doing something wrong or problem is elsewhere?