add size() helper function to ComplexMatrix class
Bugfix: avoid undefined behaviour in vector / matrix assignment

The default operator= for vectors and matrices uses the
valarray<>::operator= to assign the the elements.  However, if the the
origin and the target valarrays have different size, the behaviour of
valarray<>::operator= is undefined.  This happens for example in the
NMSSM, where we resize matrices and assign them to smaller ones.

To solve the problem we have to overwrite the default operator= for
all vectors and matrices to ensure that the target valarray is resized
properly before the assignment.