Early experiment in giving names to model input/output coordinates, rather than just counts of inputs/outputs.
Break _ModelMeta.__new__ into a few subroutines for readability.  Brings the same code generation used by custom_model to the main Model class itself for __call__ methods.  Now it's generally unnecessary for Model subclasses to redefine __call__ even if they want to update the method signature to reflect the names of their inputs.  That is now automatic.  Also the Model base class no longer makes any assumptions about the number of a model's inputs or outputs.  It assumes no inputs/outputs until otherwise specified in a subclass.
Fix some minor issues with the array-like interface to Parameters that came up, interestingly, when trying to call help() on a model class.
Remove the custom __call__ overrides in these projection classes which are no longer needed due to the automatic code generation in the _ModelMeta metaclass.
Extend the code generation performed in _ModelMeta.__new__ to include generating __init__ methods as well.  This allows still more boilerplate to be removed from most Model subclasses (though it still allows individual subclasses to define their own __init__ when needed--see for example the polynomial models).
Remove the __init__ and __call__ generation from the custom_model decorator, since that part is now already handled (and somewhat better) by _ModelMeta.__new__
Fix typo in decorator per https://github.com/astropy/astropy/pull/2835/files#r16432656
For some reason the doc build is complaining about not having pages for the Pix2Sky/Sky2Pix base classes.  Unfortunately the only obvious way to add them is to include them in the module's __all__ even though they're not generally useful for users (though I guess useful as base classes for new projection types?)  If there's another way to do this let me know.  This is okay in the meantime though.
ModelMeta now creates a nicer __init__ definition for models that have no parameters.
Add missing support for keyword arguments to Pix2Sky_AZP
Reorder some of the API docs a bit.
Just a minor detail--I noticed that the theta parameter has a default of 0.0 in the __init__, but this default is not given to the Parameter descriptor itself.
Updated docs to reflect changes in this PR; particularly that it is no longer generally useful to manually define an __init__ and __call__ (though an example of where it is useful to define a custom __init__ is given) and the roles of the input/output class attributes are discussed.
Enable InheritDocstrings on models.  Filled out several more docstrings that could use more details, and fixed __module__ and __qualname__ on generated __init__ and __call__ methods on models.
Fix spelling [skip-ci]
Summarized these changes for the changelog; will add more details in the 'whats new' page for 1.0 [ci skip]
Merge pull request #2835 from embray/modeling/model-refactor-2

Model refactoring stage 2
Fix typo [skip ci]
Improve error message when unable to aggregate non-numeric column.
Closes #2700
Record last change (improves warning message for issue #2700).