issue when field name is _data
Unfortunately I do not plan on merging your fix, as it changes some major underlying assumptions about peewee models. For now this is just a limitation of peewee. If your column is named `_data`, you can do this instead:

``` python
class User(Model):
     data = CharField(db_column='_data')
```

For example

``` python

from peewee import *

class User(Model):
    id = IntegerField()
    _data = CharField()

u = User(id=1, _data='eleme')
print u.id, u._data

```

got error

```
(virtualenv)➜  peewee git:(master) ✗ python t.py
Traceback (most recent call last):
  File "t.py", line 7, in <module>
    u = User(id=1, _data='eleme')
  File "/Users/ming/github/peewee/peewee.py", line 3971, in __init__
    setattr(self, k, v)
  File "/Users/ming/github/peewee/peewee.py", line 705, in __set__
    instance._data[self.att_name] = value
TypeError: 'str' object does not support item assignment
(virtualenv)➜  peewee git:(master) ✗


```
### just inheritance dict to resovle this bug
### please see my pr [#619](https://github.com/coleifer/peewee/pull/619) for detail
