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. 

it is used to get a vector of locally owned dofs. So it is a counter-part to what is done somewhere inside the distributed triangulation. Then those IndexSets are used to initialise MPI vectors. 

Perhaps should read "Create the set of locally owned DoFs based on the subdomain association of cells."