Eigen's requirements have changed in version 3.4. Also improve testing and better support variable precision types.