Proposal for Model.refetch()
I think I will leave this as an application-type API. Re-fetching seems to me to be complex (do you just go bby primary key, or as you have, by values)?
 So far I've only tried this by using the primary or compound key, which has worked well so far, but will fall over when used with a model that doesn't have this. I also need to raise an exception if there is no primary key fields, and add some unit tests. At the very least, this recipe is here for Google. 

Just so I can be sure, do you see any glaring flaws in the approved I've used above, or does it look sane enough to leave here for future? (ty for the feedback btw, appreciated)
 The way I have always done it is just `model_inst = ModelClass.get(model_inst._pk_expr())` (undocumented API).
 Yours is better though because it handles composite keys, so no, no flaws!

One common pattern is to "refetch" a model instance, returning a new instance of the model with updated database values. It's also possible to use `refresh()`, but this could result in surprising behaviour when overwriting class attributes etc. This pattern is applicable to any model with a primary or compound key.

I've been able to get this working by using;

``` py

class BaseModel(Model):
    def refetch(self):
        fields = self._meta.get_primary_key_fields()
        filters = [ field == self._data[field.name] for field in fields]
        results = list(self.__class__.select().where(*filters).execute())
        if len(results) == 0:
            raise IntegrityError("No such row")
        elif len(results) > 1:
            raise IntegrityError("Too many rows")
        return results[0]
```

``` py
>>> u = User.get(id=1234)
>>> u = u.refetch()
>>> print u.id
1234
```

If I presented this as a clean PR with tests and documentation, would it be accepted?
