Fix compatibility with Python 3.7
Thanks. So you can't raise `StopIteration` inside a generator according to [this PEP](https://www.python.org/dev/peps/pep-0479/)... weird. I'm guessing this is some consequence from the asyncio abomination. 

> Currently, StopIteration raised accidentally inside a generator function will be interpreted as the end of the iteration by the loop construct driving the generator.

What if it's raised *intentionally* though? @gvanrossum needs to **sit the fuck down**, I'm glad he's taking his seat and backing off...so many terrible PEPs in the last couple versions. Merged, thanks again for taking the time to investigate and fix.
Fixes many test failures like below:

```
======================================================================
ERROR: test_iterator (tests.models.TestModelAPIs)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/build/python-peewee/src/peewee-3.5.2/peewee.py", line 3613, in iterator
    yield self.iterate(False)
  File "/build/python-peewee/src/peewee-3.5.2/peewee.py", line 3597, in iterate
    raise StopIteration
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/build/python-peewee/src/peewee-3.5.2/tests/base.py", line 247, in inner
    method(self)
  File "/build/python-peewee/src/peewee-3.5.2/tests/models.py", line 989, in test_iterator
    self.assertEqual([u.username for u in query], users)
  File "/build/python-peewee/src/peewee-3.5.2/tests/models.py", line 989, in <listcomp>
    self.assertEqual([u.username for u in query], users)
RuntimeError: generator raised StopIteration
```

With the patch, all tests pass under both python 3.7 and 2.7 here.