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).
I am not sure. I think we did it this way so we can be sure that the first node of an edge is always the smaller ID, which saves a number of tests when doing searches. It is consistent this way for all elements. 
Specifically, this allows you to test
```c++
for (int i=0; i<n_nodes-1; ++i)
    for (int j=i; j<n_nodes; ++j) 
    {}
``` 
instead of both indices starting at 0.

Is there a specific reason you want/need to change this?