[scalarproducts] change template parameter for ParallelScalarProducts
The template parameter for ParallelScalarProducts have be changed from < DiscreteFunction > to < DofVector, DiscreteFunctionSpace >
This allows to implement discrete functions with dofVectors that does not fulfill the BlockVectorInterface. Further on specialized versions of the ParallelScalarProducts are used in df.scalarProductDofs( ... ).
Note: User code needs to be changed as follows: replace ParallelScalarProduct< DiscreteFunction > with ParallelScalarProduct< typename DiscreteFunction::DofVectorType, typename DiscreteFunction::DiscreteFunctionSpaceType >