FITS WCS cleanup

**Do not merge yet**

As promised, I have rethought the FITS reading and writing part of the WCS. 
The serialization of WCS in FITS keywords is not straightforward. For example, one can encode the same WCS using a number of different FITS keyword combination, This also means that you can have contradictory or complimentary keyword combination (e.g. WAT keywords and CR*** keywords) -- see http://iraf.net/irafdocs/specwcs.php for more details. 

So my idea for FITS reading is (that is already implemented):
 - a FITSWCSSpectrum class that scans a FITS header for WCS keywords. it contains various functions to convert the WAT keyword format and look for units and so on.
 - the actual creation of a wcs from fits happens with functions that take the FITSWCSSpectrum object and see what information is there and try to build a specific wcs (e.g. one of them tries to make a linear wcs). 
- a `read_fits_spectrum1d` function creates a `FITSWCSSpectrum` and then tries all the spectrum1d wcs spectrum creation functions.

It's not pretty - but I tried to find other solution and this seems to be the best of them all. I might be wrong though - so please try to poke holes into this setup. 



@keflavich @mhvk - your thoughts?