Join multiple foreign keys to the same model
Aha!

It seems like we can use `alias()` to resolve "conflicts":

``` python
user_a = User.alias()
user_b = User.alias()

query = (Match.select(Match, user_a, user_b)
    .join(user_a, on=Match.user_a)
    .switch(Match)
    .join(user_b, on=Match.user_b)
    .where((Match.user_a == user) | (Match.user_b == user)))
```

Worked for me, but I'm not sure, whether this is intended usage of `alias()` :)
 Yep, that's what the `alias()` helper is for -- allowing multiple table references in a single query .

Consider the `Match` model:

``` python
class Match(peewee.Model):
    user_a = peewee.ForeignKeyField(User, index=True,
                                    related_name='matches_a')
    user_b = peewee.ForeignKeyField(User, index=True,
                                    related_name='matches_b')
```

How can we perform query joining **both** fields: `user_a` and `user_b`?

There's a chapter in docs describing the [similar case](http://docs.peewee-orm.com/en/latest/peewee/querying.html#multiple-foreign-keys-to-the-same-model) with the `Relationship` model. But it's different, the model `Match` above can be considered as the symmetrical version of the `Relationship`.

Such query can't be executed:

``` python
matches_for_user = (Match.select()
    .join(User, on=Match.user_a)
    .join(User, on=Match.user_b)
    .where((Match.user_a == user) |
           (Match.user_b == user)))
```

I get an exception:

```
AttributeError: type object 'User' has no attribute 'user_b'
```

And when trying to add `switch(Match)` statement between joins, get another error:

```
peewee.ProgrammingError: table name "t2" specified more than once
```
