save() doesn't remember the INSERT/UPDATE state correctly
This is documented: http://peewee.readthedocs.org/en/latest/peewee/models.html#non-integer-primary-keys

The reason a model behaves this way is that it is much more simple and straightforward to simply look for a primary key than to try and track the state of a model.
 This bug would also apply if you sharded your ID space and used Snowflake to generate the IDs - which we are doing on some other tables.  So it's not just limited to non-integer keys.
 Yes, this is somewhat discussed: http://peewee.readthedocs.org/en/latest/peewee/cookbook.html#bulk-loading-data-or-manually-specifying-primary-keys

If you have an assigned ID to a primary key Peewee doesn't remember the get_or_create state of the Model.

```
class GoogleThing(BaseModel):                                                                                                                                                   
    google_id    = peewee.CharField(max_length=40, primary_key=True)                                                                                                          
    name          = peewee.CharField(max_length=32, null=False)            
```

Workaround is to write code this - note the "force" boolean that's being tracked around.

```
    try:                                                                                                                                                                
        model = GoogleThing.get(GoogleThing.google_id==google_id)                                                                                                             
    except Channel.DoesNotExist:                                                                                                                                        
        force = True                                                                                                                                                    
        model = GoogleThing(google_id=google_id)                                                                                                                          
        model.name = "Some Interesting String"

    # random other statements... Then

    model.save(force_insert=force)                                                                                                                                                                                                                                                             
```

The problem is that save() only looks for the presense of the ID field to determine INSERT/UPDATE rather than knowing how the model was created.
