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. 

For this to work, it needs to be guarded by `#ifdef DEAL_II_WITH_MPI`. In fact, I'd guard pretty much everything in this file this way. You should try and see what happens if you compile the whole thing without MPI, just to be on the safe side.