Local assembler for GroundwaterFlowProcess and LocalDataInitializer

~~This is follow up of #519 (Refactor dof table) and must not be merged before.~~
~~There are 5 commits in this PR starting at "[AL] Add back addToGlobal() in VectorMatrixAsm".~~
__Update:__ Rebased on master including the "Refactor dof table"

Three main changes included:
 - Add back the `VectorMatrixAssembler::addToGlobal()`: The local matrix/vector types are required in VectorMatrixAssembler otherwise, and having the `GlobalSetupType` already at hand the suggested way seems easier.
 - Add `LocalDataAssembler<ShapeFunction>` derived from `LocalDataAssemblerBase` in `ProcessLib::GroundwaterFlow` namespace. The base class is needed, because we store a vector of local assemblers in the process for each element or element type.
 - Add `LocalDataInitializer`, which calls the `LocalDataAssembler<ShapeFunction>::init()` function knowing the `ShapeFunction` type from the mesh element type passed by the `LocalAssemblerBuilder`.

That's it!

I already see that the documentation needs some updates/extensions; shall add soon.
i don't feel it right to have this function in a local assembler class, which should focus on only local stuff. i suggest to 
- have `double* getLocalA() {return &_localA[0]; }` and same for localRhs in local assemblr class.
- introduce another `add()` function to global matrix and vector classes, whose arguments include a pointer to double array. The array size should be known from index set. 

Then we could generally write in global assembler as 

```
A.add(indices, local->getLocalA());
rhs.add(indices, local->getLocalRhs());
```

it's bit ugly but i think we shouldn't break conceptual idea due to implementation difficulty.