Moved mk_invalid_argument to util.cpp, so it can be used in nmf implementation.
Added 'eval' and 'num_repeat' arguments to nmf optimizer