First draft of generalized WCS standard.

WIP.

At this point, I'm deliberately trying to avoid some of the rigidity of FITS WCS.  All FITS WCS have a `CDELT` offset and `PC` matrix, for example, as the "core" concept.  But I think that's limiting.  What if you want to correct on the focal plane first, for example?
In the approach in this PR, each transformation "node" has a specific type, and the schema associated with that type describes what its parameters are and how they need to look.  So it's pretty specific about what is and isn't a valid transformation tree.

In Nadia's approach (and correct me if I'm paraphrasing incorrectly), the only required attributes for each transformation node would be a name and the number of dimensions (presumably for input and output), and everything else is just free form.  It means a schema validator can't do much, but presumably at some point (when the WCS description is mapped to objects that actually do the work) there would be exceptions if that extra content was missing things etc.

Designs like Python prove that duck typing and late binding have their place -- strict interfaces aren't always helpful or necessary.  On the other hand, the lack of definition in FITS (which is what we're really trying to improve on in this work) has been the source of unending problems.

That said, this PR is currently missing an escape hatch, so that new transforms could be devised and included (and tools that don't understand them would just come across them and probably raise a warning and maybe replace them with a "null" transform or something).  That's easy enough to fix -- just because the majority of the "core" and really useful transforms will be strictly defined, doesn't mean there shouldn't be a way to extend beyond that if necessary.