Changed checkSizeCompatiblity to std::string to aid error usefulness

BinaryOperation::checkSizeCompatiblity and overridden versions in child
classes have been changed to return std::string rather than bool so that a
useful error message can be passed back down the call stack before finally
being used in throwing std::invalid_argument in BinaryOperation::checkCompatibility.
A return of true is now a return of "" (empty string). A return of false is
now a string of length 1 or more containing an error about why the
algorithm couldn't complete. Functions that used the bool return before
have been changed to use checkSizeCompatiblity(lhs,rhs).empty as that is
the equivelent of the old boolean return.
Removed a load of commented-out code from Multiply.cpp.
Indented WeightedMean.cpp and WeightedMean.h as per the guidelines.

Refs #4489
Streamlined the error throwing and corrected some grammar

BinaryOperation::checkCompatibility no longer uses a stringstream and just throws the message reported by BinaryOperation::checkSizeCompatibility
Some error messages were missing some punctuation.
One error message was re-worded.

Refs #4489
Tidied up some unneeded comments

Removed a block of commented out code from BinaryOperation.h

Refs #4489
Added braces to avoid a warning

Added a pair of braces near BinaryOperation.cpp line 376 to stop an if being ambiguous

Refs #4489
Merge remote-tracking branch 'origin/feature/4489_divide_error_improve'