MCLDA with Eigen3 plus a unit test for MCLDA

Still working on this but I wanted to get a bit of feedback now. What do you think about how I've got it set to default to Eigen3 but revert to LAPACK if Eigen3 isn't present.

The Eigen3 implementation can still be vectorized in a lot of places so I'll continue to work on that. If you see any places where you know what it should be deffs comment otherwise I'll be figuring them out one at a time.

Also I ran git reset --soft <id> but I still have a ton of commits so I must have done that wrong. I'll fix that and upstream merge before we actually merge