Remove redundant SCAMP distorition parameters when SIP is also present

Fixes #299.
Set number of pv cards to correct value, even if 0

The number of pv cards was being updated inside a loop. If there were 0
pv cards, then the loop body would never be executed, hence the number
of pv values would not be updated.

The loop counter itself, upon the end of the loop, is the number of pv
cards.
Remove assertion if no PVi_ma records are present

The WCS.wcs.get_pv() accessor seems to correctly return an empty array
if there are no PVi_Ma records.
Test case has to set fix=False

Since the fix() method now repairs duplicate SCAMP/SIP distortion
parameters, the validation now only fails if the WCS has not been fixed.
Update list of warnings that are expected to be raised
Add minimal unit test after removing duplicate PVi_m parameters
Set number of PVi_m cards inside and outside of loop

...so that it has a correct value even if the loop ends early because an
error occurs.
Explain in comment why we have to set fix=False
Wrap long line to 80 characters
Fix how the NULL pointer check for ps and pv cards is done.
Rewrite set_pv, avoid partially updating values on error

Either the entire input is converted from Python types and updated
successsfully, or no change to the internal data structures occur.

Also, should be a little bit more lightweight due to using
PySequence_Fast to eliminate need for bounds checking in loop.
Don't modify PV parameters if radial terms are present

SCAMP inserts PV parameters with no radial terms, so if there are any PV
terms with indices that are used for storing radial parameters, we can
conclude that the PV parameters do not come from SCAMP.

See
<http://web.ipac.caltech.edu/staff/shupe/reprints/SIP_to_PV_SPIE2012.pdf>.
Correct comparison for allocating new storage for PV cards
Merge pull request #1278 from lpsinger/wcs_scamp_sip_distortion

Remove redundant SCAMP distorition parameters when SIP is also present