query.first() mutates the query
The `first()` method is a bit of a special-case. It applies a limit of 1 to avoid making the server generate the full result-set, as it is assumed that after calling `first()` the query itself will not be iterated. Similarly, the mutation is done in-place so that multiple calls to `first()` do not result in additional queries.

I will add some documentation explaining this.
The `query.first()` method mutates the query and it may lead to unexpected behaviour

```python
query = SomeModel.select()
first_item = query.first()
for item in query:
    # This cycle only runs once, because after first() the query is mutated and now it has limit 1
```

The PR fixes the behaviour.