Is this going to possibly cause cryptic behaviour in some cases?

e.g. if someone has cobbled together a FITS header and tried to manually put `CTYPE1` in there but put a typo into it they will silently get a return value of `(galsim.PixelScale(), origin)` from this function.  Whereas, if they typoed one of the other important keys, I assume they would get an Exception raised. (Although I haven't read `fitswcs.py` yet...)

Would it be more consistent to put `wcs = galsim.FitsWCS(header=header)` into a `try: ... except: ...` block.  Maybe recode this whole section as:
```python
read_failed = galsim.PixelScale(1.)
if wcs_name:
    wcs_type = eval('galsim.' + wcs_name)
    wcs = wcs_type._readHeader(header)
elif 'CTYPE1' in header:
    try:
        wcs = galsim.FitsWCS(header=header)
    except KeyError:  # No idea if this is the exception type you use but you get the idea!
        wcs = read_failed
else:
    wcs = read_failed
```
You could even dispense with the `if 'CTYPE1` in header` switch, really, if you went with this pattern.