Implementation of APE5 coordinates scheme

This is the long-awaited overhaul of the coordinates framework to implement [APE5](https://github.com/astropy/astropy-APEs/blob/master/APE5.rst).

It's close to the original API proposal, but with some subtle changes - look at  `astropy/coordinates/tests/test_api_ape5.py` to see what's actually in here.  The only part not yet implemented that was in the original APIis parsing and output of strings like ``SDSS J123456.89-012345.6`` or similar formats (that can be added later).  Other than that, the changes are most mild syntax changes that made sense once we got to implementing.

The docs still need to be re-written and fleshed out for this, but there's time to do that before release.


And thanks to @adrn @astrofrog @Cadair  @mhvk, and @taldcroft for their work on this!