Use Eigen instead of Boost::uBLAS for our `matrix` type.

Eigen has a few nice features builtin, including LU decompositions.