Simpler upsert: `updates` on get_or_create
For this you should probably be explicit about using the database-specific UPSERT. Because this functionality is not necessarily available across all databases, nor does is it implemented in the same way, Peewee doesn't offer a "shortcut" which may mask inefficiencies or gotcha's in the underlying implementation.

Check the docs for details on how to issue upsert queries: http://docs.peewee-orm.com/en/latest/peewee/querying.html#upsert
_I acknowledge that this functionality may already exist in a similarly simple form and I just haven't found it_

At the moment if I call `get_or_create` the `defaults` clause is only used when we create the object:

```
model, created = Model.get_or_create(
   **primary_details,
   defaults=**secondary_details
)
```

In the case of an "upsert" we don't just want to use those details on a create. We want to update an existing row that matches `primary_details`.

Right now, I have this:

```
model, created = Model.get_or_create(
   **primary_details,
   defaults=**secondary_details
)

if not created:
   Model.update(**secondary_details).where(Model.id == model).execute()
```

I know postgres has the `on_conflict` extensions but they're both cumbersome and non-transportable. Therefore I would llike to propose an addition to `get_or_create` whereby a new parameter (Eg `updates`) has the same effect on both an existing and new object that `defaults` does on a new object.

This would result in the following syntax for users needing an upsert. And as it's handled in python, it would be transportable:

```
model, created = Model.get_or_create(
   **primary_details,
   updates=**secondary_details
)
```