Implement rotation for vector valued dofs on periodic bc

This commit completes the interface for periodic boundary conditions. It
exposes the interpolation matrix (that is internally used to satisfy
hanging node constraints on periodic boundaries) and provides a possibility
to generate it from a rotation matrix and an index for the vector component
in question (in a similar vein as we already do this for different vector
valued finite elements).

Signed-off-by: Matthias Maier <tamiko@kyomu.43-1.org>
add accompanying tests

Signed-off-by: Matthias Maier <tamiko@kyomu.43-1.org>
Add a changelog entry
Fix undefined symbol in MPI::MinMaxAvg without MPI, commit 97bd7e2.
Merge pull request #257 from kronbichler/master

Fix undefined symbol in MPI::MinMaxAvg without MPI, commit 97bd7e2.
fix comments and style issues
Merge pull request #256 from tamiko/branch_periodic_bc

Implement rotation for vector valued dofs on periodic bc
Third attempt to fix uninitialized variable in MPI::MinMaxAvg
Merge pull request #259 from kronbichler/fix_mpi_min_max_avg

Third attempt to fix uninitialized variable in MPI::MinMaxAvg
Some minor fixups to correct doxygen references
Merge pull request #260 from tamiko/doxygen_fixes

Some minor fixups to correct doxygen references
Fix problematic doxygen markup.
Merge pull request #261 from bangerth/fix-doc

Fix problematic doxygen markup.
Allow comparison == and != of TriaAccessorBase with different tria

It is well-defined to check for equality and inequality of TriaAccessorBase (cell_iterator types) that belong to different triangulations. Those are simply unequal. This is necessary e.g. for comparing with a default constructed cell_iterator variable. Of course, operator < is still undefined.
Merge pull request #262 from kronbichler/master

Allow comparison == and != of TriaAccessorBase with different tria
modified the documentation of the Arpack solver
corrected Arpack section in Step-36
added a step-36 test to arpack category
Improved comparison operators for TriaAccessorBase

The previous commit was a bit too aggressive because it is still useful to catch the case when comparing iterators to two different triangulations (leading to infinite loops).

Therefore, I now merely extended the assertion to not trigger when one of the two objects is default constructed, i.e., does contain a null pointer to tria. The comparison then does not need tria == a.tria because invalid iterators use invalid cell and level index, too (leading to !=).
Initialization of FEEvaluation like FEValues

A new way to initialize an FEEvaluation object (fast tensor product evaluation routines) has been introduced.
It takes the same arguments as the initialization method of FEValues, namely a Mapping, a FiniteElement, a
one-dimensional Quadrature<1> object, and update flags. This enables using FEEvaluation on the fly just as
FEValues. Since FEEvaluation treats objects of one base element only, this class can select which components
to read.

The concept is explained in the documentation of the FEEvaluation class and an example for the Laplace matrix
is given. However, it also works for the Stokes operator as shown by the test program assemble_matrix_02.