This seems fine; though now that parameter initial values are passed all the way to the `Model` base class, I wonder if it shouldn't also handle setting those initial values a la `ParametricModel._initialize_parameters`.  That would allow eliminating slight oddities like those in in the projection models where you have, for example,

```
def __init__(self, mu=0.0, gamma=0.0):
    super(Sky2Pix_AZP, self).__init__(mu=mu, gamma=gamma)
    self.mu = mu
    self.gamma = gamma
```

Now that initial parameter values are checked by the base class, the repetition of this kind of boilerplate suggests that it should be handled in `Model.__init__` as well.  The only difference between `Model._initialize_parameters` and `ParametricModel._initialize_parameters` is that the latter would also initialize the `._parameters` array.