Initial implementation of moab reader for cmb.
Add in point id proptery so we relate back to model.
Correct reading of high order cells.
Refactor common code to be implementation detail classes.

We also refactor reading to partially support vtkPolyData filling.
We refactor more code and add in support for proper boundary condition reading

Previous reader was detecting neumann and other boundary conditions incorrectly.
Which caused me to write the ExtractShell class which is needed to properly
find the shell of a volume so we can relate to the boundary conditions.
Refactor sparse tag reading to use cell sets.
Add in face identification by using set intersections.

We need to take each region and find the faces sets of that region by
finding shared faces between regions, and also looking at the boundary
sets.
Add in loading of cells as polydata, properly linearize high order cells.
Adding in support for face to region mapping.

To get the data to load properly we need to be able to map
each face to the regions it bounds.
Refactor the face set reading classes.
Add in support to write out boundary condition sets as field data.
Use the new tag for defining user boundary conditions
Correct a bug in the boundary condition reading.
Correct an off by one error that caused issues when relating faces/bcs
If no material set fall back to 3d volumes for basis of loading.
Cleanup the reading of the shell in to be smarter
Cleanup SparseTagReading.
More refactoring in preparation for proper domain and region reading
Add new region labeling code, so we get proper moab regions
Add in new code to properly map regions to domains.

Instead of mapping each cell to a domain, we now map regions to domains.