Override Model __repr__
Well, theoretically in your example you would just:

```python
def __str__(self):
     return self.label
```

But for "complete" control...yeah, not do-able at the moment.

What happens when you implement a `__repr__` method on your model class? Are you *also* implementing `__str__()`? Fixed it and added a test-case showing the behavior you described. Hi coleifer,

I think it is only half fixed. It now works to define `__repr__` on a model itselt, but not on an intermediate model:
```
#!/usr/bin/env python3

from peewee import *

class MyBase(Model):
    label = CharField()
    def __repr__(self):
        print("__repr__ called")
        return '[{0}: {1}]'.format(self.__class__, self.label)

class MyModel(MyBase):
    pass

class MyModel2(MyModel):
    def __repr__(self):
        print("__repr__ called")
        return '[{0}: {1}]'.format(self.__class__, self.label)

# Does not work
m = MyModel(label = "blah")
print(repr(m))
print(MyBase.__repr__, MyModel.__repr__, m.__repr__, "\n")

# Works
m = MyModel2(label = "blah")
print(repr(m))
print(MyModel2.__repr__, m.__repr__)
```
Output:
```
<MyModel: None>
<function MyBase.__repr__ at 0x7f4656b4b510> <function ModelBase.__new__.<locals>.<lambda> at 0x7f4656ab6378> <bound method ModelBase.__new__.<locals>.<lambda> of <MyModel: None>> 

__repr__ called
[<Model: MyModel2>: blah]
<function MyModel2.__repr__ at 0x7f4656ab6598> __repr__ called
<bound method MyModel2.__repr__ of [<Model: MyModel2>: blah]>
```
The `"__repr__ called"` in the second last line of the output is generated by `print(m.__repr__)` calling `__name__` on the bound function, which itself calls `repr` on the object that `m.__repr__` is bound to (that is `m`) btw.

Peewee is really a nice library :). Very well designed! @coleifer  is it possible to fix the issue to be able to define `__repr__` on a parent model?
In peewee 2 I used to be able to override the `__repr__` of a Model by creating a custom class, for example

```python
class MyBase(Model):
    def __repr__(self):
        return '<{0}: {1}>'.format(self.__class__, self.label)
```

This doesn't seem to work anymore in peewee 3 because the `__repr__` is set in `ModelBase.__new__`. Is there a way to override this? I understand that it's still possible to override `__str__`, but I'd like to be able to control the whole string output.