Fix various bugs in periodic boundary conditions

Third try...

This series of bugfixes do not alter any test output (just append
additional tests), therefore they are correct by definition of our testsuite.

I'll run a full regression tester run against it - please wait for the output.


Changes in detail:

4bf648b (Matthias Maier, 4 days ago)
   make astyle happy

eca4378 (Matthias Maier, 5 minutes ago)
   Avoid unnecessary inversion of a transformation matrix

4c5c033 (Matthias Maier, 4 days ago)
   Bugfix: adjust rotation for inverted matching

   When constraining from face_1 to face_2 we have to use an (orientation,
   flip, rotation) bitset that actually gives the relative orientation of
   face_2 to face_1 (and not as specified face_1 to face_2).

   This worked by accident because the constraining direction face_2 to face_1
   is accidentally almost always used in all test cases.

cbc1fd0 (Matthias Maier, 72 minutes ago)
   add another version of the dof_tools_21_b

   that also tests for correct behaviour with hanging nodes. This is done by
   additionally refining the second cube once. Test that constraining face_1
   -> face_2 and the opposite direction face_2 -> face_1 give the exact same
   result.

   Manually verified that this is indeed the case

883a622 (Matthias Maier, 66 minutes ago)
   Also check for reverse matching in bits/dof_tools_21_b

   Also check for the inverse matching from face_2 to face_1 in the test
   bits/dof_tools_21_b. Both directions must produce the same constraint
   matrix except for the ordering of the constraints possibly being swapped.

   Manually verified that this is the case

48d8293 (Matthias Maier, 4 days ago)
   Bugfix: Conditionally use matrix in orthogonal_equality

   Only apply the parameter matrix in orthogonal_equality if it is a spacedim
   x spacedim matrix and can be interpreted as a rotation.

   Further bugfixes and documentation updates.

4b368f4 (Matthias Maier, 4 days ago)
   Use spacedim in compute_transformation instead of incorrect dim

8e6ae92 (Matthias Maier, 4 days ago)
   Code cleanup and several bugfixes

   Refactor the creation of the final (possibly rotated) interpolation matrix
   in make_periodicity_constraints into its own function. Add some additional
   asserts to catch corner cases.

   Return early if nothing to do (fixes dof_tools_21* tests)

baa7a73 (Matthias Maier, 4 days ago)
   restructure and clean up some code
Can you rename this variable `n_dofs_per_face` or `dofs_per_face`? It makes it easier to read the code.