AbstractOutputFunction: tweak whitespace
Add missing section headers
AbstractOutputFunction: simplify javadoc
AbstractInplaceFunction: clean up method order
AddConstantToNumericType: extend OutputFunction

That way, it knows how to handle the case where out = null.
Make "out" parameter required for some functions

Previously, all Functions had the "out" parameter marked optional,
meaning that if a null output was passed to compute, each Function
implementation was independently responsible for handling it.

The OutputFunction hierarchy developed as a way to ease that problem:
you could define a handy createOutput method that knew how to create the
output from the input, if the provided output was null.

But non-OutputFunction implementations fell by the wayside: the vast
majority of them did not check for null output, but rather simply failed
with NPE when a null output was given.

This change makes such functions extend a new layer of the class
hierarchy called AbstractStrictFunction, which casts the "out" parameter
as required. In this way, the framework will no longer match them to
input parameters when an output is not explicitly provided.

Henceforth, _all_ functions that want to have an optional "out" should
extend AbstractOutputFunction, whereas all those that want to require
"out" should extend AbstractStrictFunction.

Technically, there is one other extension of AbstractFunction:
AbstractInplaceFunction. This flavor collapses the "in" and "out"
parameters to a single "arg" which is both the input and the output --
and is required to be specified, of course.
Fix failing StatisticsTest by passing correct template
Merge branch 'function-cleanup'

This branch splits the AbstractFunction class hierarchy into two
categories: those with required output parameter, and those with
optional output parameter.

This distinction makes the requirements for functions more explicit, so
that the OPS framework can perform better template matching. In
particular, it will no longer match ops that fail to handle null output
parameters correctly, when no explicit output is passed.

For further details, see: f75cb26325cef4877d9213c3efe2db0743272e2c