Use FGT to determine a lowrank affinity matrix

Instead of building a giant affinity matrix G to determine the lowrank
eigenvectors, we implicit generate the affinity matrix using figtree.
For now, we're letting figtree run fast and loose with
FIGTREE_EVAL_AUTO, but if we need our affinity matrix to be exact we
could switch it to FIGTREE_EVAL_DIRECT. That will be slower, but the
memory footprint will still be lower than the previous setup.
Add a parent exception, and an arpack_error

Always good to have our own exception tree.
Allow either sign for eigenvectors

Eigenvectors can flip signs around all willy-nilly.
Prepend include directories

I was picking up a system install of CPD before my local installation,
and I hope that this commit fixes that problem. Untested.
Remove unused variable from find_P

This variable got subsumed by our figtree wrapper.
Use figtree_wrap in eigen calcs

It's simpler to read