Add more constructors and operator= as described in the Eigen documentation and headers

This hopefully brings some performance improvement