Usage of wildcards corrupted with Field coerce
Please close this issue
I found it duplicate to #212 

Reproduction

``` python
class Sample(Model):
    test = CharField(max_length=3)

Sample.create(test='123')
sq = Sample.select().filter(test__ilike='%123%')
assert sq.count() != 0
```

Root Cause:
Digg into the source code I found following lines:

peewee.py:775

``` python
            if isinstance(expr.lhs, Field):
                conv = expr.lhs
            lhs, lparams = self.parse_expr(expr.lhs, alias_map, conv)
            rhs, rparams = self.parse_expr(expr.rhs, alias_map, conv)
```

peewee.py:830

``` python
        elif conv and p:
            p = [conv.db_value(i) for i in p]
```

peewee.py:487

``` python
    def coerce(self, value):
        value = format_unicode(value or '')
        return value[:self.attributes['max_length']]
```

Since calling db_value of a CharField will call coerce to return a value for database, a CharField with max_length will discard the ending wildcard. Thus the sq in the sample code will compile to a clause like

``` sql
`test` LIKE '%12'
```

where it should be

``` sql
`test` LIKE '%123%'
```

I have no idea how to fix this in a right way. I personally write an alternative of parse_expr to avoid this problem for now.
