compilers (e.g. Intel) using the integer version of `abs()`
instead of the 'double' version causing failures in the unit
tests in tests/unit/fem/test_estimator.cpp.
Use 'auto &' instead of just 'auto' in various places to
avoid copying arrays and structures.
Pass 'Array' parameters by reference instead of by value.
Define ErrorEstimator::GetTotalError() in the base class to
return zero, making it optional to override in derived classes.
This should allow any user defined derived classes to continue
to work without having to define this new method.
Some small formatting edits.