Assembler lib

These changes in short separate the global assembler (`VectorMatrixAssembler`) from the local assembler types (almost) and add a possibility to provide a specific local assembler for each element or element type.
A simple usage is shown in the tests (last commit), though very simplistic.

I'm open for name suggestion for the `SimpleAssembler`.
I'm changing the function argument from reference to a pointer. This reads easier but clever users can put any type into the `LocalAssembler_`, so it's not bulletproof. One could do more checks with `std::is_pointer` etc, but I think it is not that important now.