Add function to create mesh boundary node lookups from the nodes

Since the nodes themselves already store data on which boundary(s) they
are on we can build the mesh's lookup schemes from the node data.

This makes life much simpler when using old meshes to create the nodes
for new meshes.

Only takes O(Nnode) time (unlike some of the other boundary lookup
initialisation functions).