Boundary element generator

This changeset aims to provide a tool to extract boundary elements from an existing domain mesh. The boundary elements will be used when we applying 2nd and 3rd boundary condtions (i.e. we need to integrate shape functions over boundaries).
As far as I can see you could ```const``` e. Also, the pointer is not necessary (not sure because of polymorphism).