Reduce tolerance, add alternative code path.

The alternative code path attempts to deal with floating point cancellation
issues, which may not turn out to be a problem in the end (for real cases).
Merge remote-tracking branch 'bska/master'
Add FindEigen3 cmake module. Currently unused.
Merge remote-tracking branch 'atgeirr/master'
Now Eigen is found properly.
Merge remote-tracking branch 'atgeirr/master'
White-space cleanup.

No functional changes.