Read any valid HDUs if bad HDUs exist
Read any valid HDUs if bad HDUs exist

This patch makes sunpy.io.fits.read return any valid HDUs rather than
erroring if one or more HDUs are invalid (can not be read by
astropy.io.fits). It raises a warning with the full last traceback as
the warning message to give the user some debugging information.

This is born out of old GOES data having the science data in a valid
primary HDU and other data in an invalid BinTable HDU afterwards, this
allows us to get the interesting science data while ignoring the bad table.

dpshelio/sunpy,dpshelio/sunpy,dpshelio/sunpy