Issue title: Ability to preserve original field ordering when overriding existing fields
 Issue body: When `Options.export_order=True`, fields created on sub-classes come after those of parent classes.  This makes sense most of the time, except when overriding an existing field, such as to change the default or list of choices.

For example:

```python
class Thing(Model):
    class Options:
        export_order = True

    name = StringType(default='foo')
    value = IntType()


class SubThing(Thing):
    name = StringType(default='bar')
    new = StringType()
```

The field order for `Thing` is `['name', 'value']`, but `SubThing` is `['value', 'name', 'new']`.   I think it should be the default behavior that the order for `SubThing` is `['name', 'value', 'new']`.  At the very least, there should be an attribute on `Options` to control this.

 Comments: 
 Comment 0: I agree, and you know what, I seem to have fixed this in my local branch. Back in May I was working on a huge patch to update the Model API, and improving field inheritance was part of it. But then I got busy with an actual project that pays the bills, so this whole thing got sidelined.

I'm really bummed for being inattentive for so long, but things should get better right about now.

 Comment 1: hey @bintoro, no worries, just glad to have you back :)  

Is your model api branch ready to test?  Also, if there are any tasks on the road to 2.0 that can be delegated, let me know.

{'source': 'GithubIssues', 'repo_name_with_owner': 'schematics/schematics', 'issue_id': 184903250, 'repo_stars': 2130.0}