Retrieving data through a ManyToManyField fails with ForeignKeyFields as primary keys
I reported this issue before the 2.8.2 release but I just tried and I can still reproduce it with the same code example and the latest release (2.8.2).
 The issue has not been fixed, but I'm now looking into it.
 Thanks for the code to repro - you have no idea how much I appreciate it!
 Fixed
 Thanks!

Here is a simple example:

``` python
from playhouse.sqlite_ext import SqliteExtDatabase
from playhouse.fields import ManyToManyField
from peewee import Model, ForeignKeyField

db = SqliteExtDatabase("yo.db")

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

class A(BaseModel):
    pass

class B(BaseModel):
    pk = ForeignKeyField(A, primary_key=True)

class C(BaseModel):
    bs = ManyToManyField(B, related_name="cs")

# Call this method to reproduce the issue
def reproduce():
    db.create_tables([A, B, C, C.bs.get_through_model()], True)

    a = A.create()
    b = B.create(pk=a)

    print(list(b.cs))
```

Expected result: it should print an empty list

Actual result:

```
Traceback (most recent call last):
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 3485, in execute_sql
    cursor.execute(sql, params or ())
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/x/app.py", line 29, in reproduce
    print(list(b.cs))
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 2967, in __iter__
    return iter(self.execute())
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 2960, in execute
    self._qr = ResultWrapper(model_class, self._execute(), query_meta)
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 2656, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 3492, in execute_sql
    self.commit()
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 3316, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 127, in reraise
    raise value.with_traceback(tb)
  File "/tmp/x/venv/lib/python3.4/site-packages/peewee.py", line 3485, in execute_sql
    cursor.execute(sql, params or ())
peewee.InterfaceError: Error binding parameter 0 - probably unsupported type.
```

Indeed, if we print `b.cs` we can see there’s a bad binding at the end:

```
<class 'app.C'> SELECT "t1"."id" FROM "c" AS t1 INNER JOIN "c_b_through" AS t2 ON ("t1"."id" = "t2"."c_id") INNER JOIN "b" AS t3 ON ("t2"."b_id" = "t3"."pk_id") WHERE ("t2"."b_id" = ?) [<app.A object at 0x7f2c13720d30>]
```

It should probably be using the foreign key directly instead of the model pointed _by_ it. I’m not really sure how to fix this in Peewee.
