Shouldn't ensure_join unfold aliases?
Just realized that `filter` is actually deprecated, so I guess there no plans for it. Anyway `ensure_join` is also used inside `SelectQuery.annotate` so maybe it still makes sense. Hi, interesting I hadn't thought about this issue. You're correct as far as filter being deprecated, but it's still probably worth resolving this in some fashion. I would point out that filter supports a subset of the functionality of where, so if filter works there is a solution using where. 06860a0a7619ffd3d0f80cbb81ce7e66ab632cb5 in the 3.0a branch fixes this issue. It also supports the use of the alias assigned to a model as a portion of the lookup:

```python
# works as expected in 3.0a:
UserAlias = User.alias('ua')
query = (Tweet
         .select(Tweet.content, UserAlias.username)
         .join(UserAlias)
         .filter(ua__username='foo')

for tweet in query:
    print tweet.user.username, tweet.content
```
```python
class Author(peewee.Model):
    name = peewee.CharField()

class Book(peewee.Model):
    name = peewee.CharField()
    author = peewee.ForeignKeyField(Author)

query = (Book
         .select(Book.name)
         .join(Author.alias(), peewee.JOIN_LEFT_OUTER)
         .filter(author__name='someone'))
print(query.sql()[0])
```

`ensure_join` call inside `filter` generates additional join on `author` table because of the `Author.alias()`. The compiled query looks like:
```sql
SELECT "t1"."name"
FROM "book" AS t1
LEFT OUTER JOIN "author" AS t2 ON ("t1"."author_id" = "t2"."id")
INNER JOIN "author" AS t3 ON ("t1"."author_id" = "t3"."id")
WHERE ("t3"."name" = ?)
```

So shouldn't `Query.ensure_join` consider model and it's alias as the same model and do not generate additional join (`t3`) or I'm missing something and it is necessary?

P. S.
I know that it can be solved using `where` (see code below), but I've provided simplified test case. In my real code I have to use `filter` anyway. So just interesting if it's going to be changed or I must write my own `filter`.
```python
author_alias = Author.alias()
query = (Book
         .select(Book.name)
         .join(author_alias, peewee.JOIN_LEFT_OUTER)
         .where(author_alias.name == 'someone'))
```
