merge w. giulio (master)

how about this,


template<typename Tgeometry, typename Tpvec, typename Tgroup>
 29 Eigen::Matrix<double,3,3> gyration(Tgeometry &geo, Tpvec &p, Tgroup &g, const Point &cm) {
 30   double sum=0;
 31   Eigen::Matrix<double,3,3> S;
 32   S.setZero();
 33   for (auto i : g) {
 34     Point t = p[i] - cm;
 35     geo.boundary(t);
 36     S += p[i].mw * t * t.transpose();
 37     sum += p[i].mw;                      // total mass
 38   }
 39   assert(sum>0 && "Zero molecular weight not allowed.");
 40   return S*(1/sum);
 41 }