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]
This provides a more reliable way to determine that we are definitely imported from an astropy source checkout, by checking for a file .astropy-root that would only ever possibly exist in this case.  This is inessential though and can be removed if people want to get rid of this extra top-level file.
Actually this is better; we can put the special .astropy-root file under static/ so that it's not cluttering up the actual root.  But this is good enough for the desired purposes.
Add an explanation to .astropy-root
If extension modules need to be recompiled, automatically try running build_ext --inplace rather than just failing to import--very convenient.  At some point this should be extended to work for any extension module (rather than just using the utils._compiler heuristic) but that could be a little trickier
"docs/coordinates/skycoord.rst":
- I added an example how to plot the data in an Aitoff projection with
  matplotlib.