Enhance the UNV reader

This branch adds the ability to read in "groups" (basically sidesets and subdomains) from a UNV file, and does away with some weird stuff that used to happen, such as parsing the file twice.  It is also now optional to pass a MeshData object to the UNV reader, which makes it more flexible to use.