SEP for the re-implementation of `sunpy.wcs` as `sunpy.coordinates`

Putting in the PR so that people can form their opinions on what I've written so far.
Fire away.
All coordinate frames are fully 3D, even helioprojective. They represent a point in 3D space with respect to an origin.

In the case of helioprojective that origin is at the observer. Helioprojective is a spherical coordinate system, with an origin at the observer. The third coordinate (radial) is the distance from the origin (observer) to the point in 3D space.

All the coordinate frames are aware of the observer location (as specified in the observer location and frame attributes section) the observer location defaults to (0,0,1 AU) in HGS coordinates.