KeyError when trying to dynamically add pre-existing field with a new default
The default is only removed if the original field instance has a default, so this seems like something that only would come about in a very weird way. Going to pass on any changes.
This is a funny situation, but essentially I'm trying to dynamically rebuild a database. It starts with a call to `generate_models` (which is totally amazing, thank you!) but that does not include any defaults. In order to add them back in, I'm looping through the fields and adding the default on the fly. Rather than manually messing with the `_meta` properties like `defaults`, `_default_callables`, etc. I decided to use `Metadata.add_field`, like so:

```python
for name, field in list(model_class._meta.fields.items()):
    field.default = datetime.utcnow
    model_class._meta.add_field(name, field)
```

I noticed that `add_field` starts by removing the old one if it exists, so I figured this was safe to use. But it generates a key error because the old field didn't have a default on it:

```python
  File ".../python3.8/site-packages/peewee.py", line 5912, in add_field
    self.remove_field(field_name)
  File ".../python3.8/site-packages/peewee.py", line 5961, in remove_field
    del self.defaults[original]
KeyError: <Field: model_name.field_name>
```

It seems like it'd be an easy fix to just add a single line to `remove_field` right before that, so it becomes:

```python
if original in self.defaults:
    del self.defaults[original]
```

Or even turn it into a `pop` like the line below.

If for some reason you don't think this is something you want to support then I did find a pretty easy and logical workaround:

```python
for name, field in list(model_class._meta.fields.items()):
    model_class._meta.remove_field(name)
    field.default = datetime.utcnow
    model_class._meta.add_field(name, field)
```