Branch sharedtria

it is work in progress. In a nutshell, the idea is to wrap shared triangulation into another class and encapsulate all renumbering and distribution of DoFs for the parallel case. So that to the user it behaves similar to the distributed triangulation class. The only exception being that there are no artificial cells (only locally owned and ghost). 

The main modifications are related to policies distribute_dofs and renumber_dofs. 
The ugly thing is that the new NumberCache is returned, whereas the current one 
is provided as a non-const reference to be updated within policy's methods. 
That's because we call DoFRenumbering functions from within the policy class.
I tried to use only NumberCache provided via reference, but there were some issues with the current code in parallel triangulation.

Another family of issues are related to renumbering routines. So far, the same code as in distributed case is used and inside the policy new numbers are gathered among processors. Then sequential renumbering is called and finally NumberCache-related things are updated.

Step 18 was updated to use the class. 

Why not write it like this:
```
For each processor, determine the set of locally owned degrees of freedom as an IndexSet. This function then returns a vector of index sets, where the vector has size equal to the number of MPI processes that participate in the DoF handler object. 

The function can be used for objects of type dealii::Triangulation or parallel::shared::Triangulation. It will not work for objects of type parallel::distributed::Triangulation since for such triangulations we do not have information about all cells of the triangulation available locally, and consequently can not say anything definitive about the degrees of freedom active on other processors' locally owned cells.
```