adcp functions - improved performance by replacing forloops with np.einsum
Merge pull request #146 from desiderr/adcp

CIDEVMI-948: adcp functions - improved performance by replacing forloops with np.einsum
Adds caller-specified skip values for gradient test

There's a tad bit of ambiguity in the DPS for how to represent skipped values
in a gradient test that exist between mindx. "In order to avoid small X steps,
which can lead to exaggerated gradients because of the X difference is used in
the denominator, setting MINDX to a value greater than zero is an option to
<remove> all data points DAT (and X) for which X is separated by MINDX or
less." I used -99 in the interest of forward progress and not getting bogged
down in the technical trenches. In CI, we are extending the meaning behind non
0,1 values for QC to indicate various things from failure to process, lack of
lookup values or pending evaluation. -99 is reserved for errors, so I'm going
to extend our capabilities so that callers can specify the skipped value as a
floating point (double) value.

I don't know what a good alternative to -9x is for skipped values but I'm
thinkg -7x maybe -70
Updates method signature
Updates the gradient function

- Adds detailed description of algorithm
- New test to verify skipped values are treated correctly
Fixes some leftover debug and patches tests
Removes extensions/test binary from the repository
Spelling errors
Adds new python test to verify proper handling of mindx sequences