ManyToManyField not in Model._meta.fields
ManyToManyField does not call `model_class.add_field`, so a "solution" may be to just add this to `ManyToManyField.add_to_class`:

```
model_class._meta.fields[name] = self
```

(It's not DRY, but we can't call `add_field` itself, because it expects the field to have a column, so maybe a bit of refactor is needed.)

Edit: it crashes in `_fields_to_index` (`AttributeError: 'ManyToManyField' object has no attribute 'index'`), so certainly a filter needs to be added there.
 It's not technically a field, so it is not present in the field lists. It's just a descriptor that provides convenient access to the through table relationship.

```
import peewee
from playhouse.fields import ManyToManyField

db = peewee.SqliteDatabase(':memory:')


class Student(peewee.Model):
    name = peewee.CharField()

    class Meta:
        database = db


class Course(peewee.Model):
    name = peewee.CharField()
    students = ManyToManyField(Student, related_name='courses')

    class Meta:
        database = db


if __name__ == '__main__':
    assert 'name' in Course._meta.fields
    assert 'students' in Course._meta.fields
```

```
$ python peewee_many2many.py 
Traceback (most recent call last):
  File "peewee_many2many.py", line 23, in <module>
    assert 'students' in Course._meta.fields
AssertionError
```

Is that by design?
