Aggregate Multiple Joins to Same Table
I didn't realize this broke with the latest changes, that sucks should've had a unit test in place to catch it. I'll look into it, but I'm thinking maybe I need to just scrap `AggregateQueryResultWrapper` and try a rewrite with some new ideas, it's becoming a bit of an eye-sore.
 Did you try `on=SomethingWithTwoDifferentThings.owner`, i.e. passing just the field object rather than using a boolean expression?
 Yeah, that's what I had initially, I put what I did above because I figured it was more implicit. Both ways yield the same error:

```
Error
Traceback (most recent call last):
  File "/Users/arrow/dev/test/peewee_test.py", line 37, in test_load_my_stuff_please
    .aggregate_rows())[0]
  File "/Users/arrow/dev/test/venv/lib/python2.7/site-packages/peewee.py", line 2703, in __getitem__
    res.fill_cache(index)
  File "/Users/arrow/dev/test/venv/lib/python2.7/site-packages/peewee.py", line 1912, in fill_cache
    self.next()
  File "/Users/arrow/dev/test/venv/lib/python2.7/site-packages/peewee.py", line 1898, in next
    obj = self.iterate()
  File "/Users/arrow/dev/test/venv/lib/python2.7/site-packages/peewee.py", line 2197, in iterate
    instance._data[metadata.src_fk.name]]
KeyError: 2
```
 I believe this one should now be fixed in master.

I don't appear able to load a join via `aggregate_rows()` when multiple foreign keys point to the same object.  This used to be possible.

Consider the below:

``` python
from peewee import *
from unittest import TestCase

db = SqliteDatabase(':memory:')


class Thing(Model):
    name = CharField()

    class Meta:
        database = db


class SomethingWithTwoDifferentThings(Model):
    name = CharField()
    creator = ForeignKeyField(Thing, related_name='creations')
    owner = ForeignKeyField(Thing, related_name='owned_stuff')

    class Meta:
        database = db


class EagerLoadingIsHard(TestCase):
    @classmethod
    def setUpClass(cls):
        SomethingWithTwoDifferentThings.create_table()
        Thing.create_table()
        thing1 = Thing.create(name='Thing 1')
        thing2 = Thing.create(name='Thing 2')
        SomethingWithTwoDifferentThings.create(name='Something', owner=thing1, creator=thing2)

    def test_load_my_stuff_please(self):
        something = (SomethingWithTwoDifferentThings
                     .select(SomethingWithTwoDifferentThings, Thing)
                     .join(Thing, on=(SomethingWithTwoDifferentThings.owner == Thing.id).alias('owner'))
                     .where(SomethingWithTwoDifferentThings.name == 'Something')
                     .aggregate_rows())[0]

        self.assertIn('owner', something._obj_cache)
        self.assertEqual(something._obj_cache['owner'].name, 'Thing 1')
```

I'm able to load the creator via simple `.join(Thing)`, though there doesn't appear to be a way to load the owner.
