Issue: Could/Should BinaryUUID field attempt str -> uuid conversion
Author: Allu2
State: closed
Created: 2018-11-02 13:15:51

Given model such as:
```python
class Product(Model):
    id = BinaryUUIDField(primary_key=True)
```
If I then attempt to create new `Product` from a dict containing:
```python
data_dict = {'id': '74db9954-97c4-4947-941d-42b3fa33be3c'}
```
by something akin to :
```python
product = Product(**data_dict)
product.save()
```
I now see:
```python
  File ".../python3.5/site-packages/peewee.py", line 5574, in save
    self.insert(**field_dict).execute()
  File ".../python3.5/site-packages/peewee.py", line 1574, in inner
    return method(self, database, *args, **kwargs)
  File ".../python3.5/site-packages/peewee.py", line 1645, in execute
    return self._execute(database)
  File ".../python3.5/site-packages/peewee.py", line 2288, in _execute
    return super(Insert, self)._execute(database)
  File ".../python3.5/site-packages/peewee.py", line 2061, in _execute
    cursor = self.execute_returning(database)
  File ".../python3.5/site-packages/peewee.py", line 2068, in execute_returning
    cursor = database.execute(self)
  File ".../python3.5/site-packages/playhouse/postgres_ext.py", line 441, in execute
    sql, params = ctx.sql(query).query()
  File ".../python3.5/site-packages/peewee.py", line 549, in sql
    return obj.__sql__(self)
  File ".../python3.5/site-packages/peewee.py", line 2263, in __sql__
    self._simple_insert(ctx)
  File ".../python3.5/site-packages/peewee.py", line 2160, in _simple_insert
    return self._generate_insert((self._insert,), ctx)
  File ".../python3.5/site-packages/peewee.py", line 2235, in _generate_insert
    return ctx.sql(CommaNodeList(all_values))
  File ".../python3.5/site-packages/peewee.py", line 549, in sql
    return obj.__sql__(self)
  File ".../python3.5/site-packages/peewee.py", line 1490, in __sql__
    ctx.sql(self.nodes[n_nodes - 1])
  File ".../python3.5/site-packages/peewee.py", line 549, in sql
    return obj.__sql__(self)
  File ".../python3.5/site-packages/peewee.py", line 1488, in __sql__
    ctx.sql(self.nodes[i])
  File ".../python3.5/site-packages/peewee.py", line 549, in sql
    return obj.__sql__(self)
  File ".../python3.5/site-packages/peewee.py", line 1202, in __sql__
    return ctx.value(self.value, self.converter)
  File ".../python3.5/site-packages/peewee.py", line 561, in value
    value = converter(value)
  File ".../python3.5/site-packages/peewee.py", line 4210, in db_value
    raise ValueError('value for binary UUID field must be UUID().')
```

As a workaround I can do:
```python
data_dict['id'] = uuid.UUID(data_dict['id'])
```
Before handing the `data_dict` to model.

This is strip down version of my situation which has bit more complex model.
I'm not sure if I am using peewee incorrectly which leads to this error or if I just assumed incorrectly that `str --> uuid` conversion should happen automagically in situations like this

Peewee version: 3.6.4

Merged a fix that allows:

* 32-character hexadecimal string representation
* 16-byte raw binary representation

This should solve your problem!