Add ability to read 'rod' type elements from UNV files.
UNV reader now supports reading the "groups" section and assigns BCs

* Adding a map from UNV element IDs to libmesh element IDs.
* Parsing of the groups has to happen after the elements have been read,
  so we can actually use this map.
* Do some error checking of the boundary elements listed in the groups
  section.
* Factor out determination of max element dimension into separate function.
* Delete the lower-dimensional elements after reading the file.
* Handle max_dim elements in the groups section.
* Associate group numbers and names for sidesets and subdomains.
Misc. improvements/refactoring

* Fixing formatting in UNVIO::node_in
* Duplicate less code.
* Simplify file parsing code.
* Verify that the groups section comes after nodes and elements.
* Un-inlining UNVIO member functions.
* Use new max_elem_dimension_seen() function
* Make element_in not require _n_elements, node_in not require _n_nodes.
Read the file in 1 pass

* Enforce reading the UNV file in the proper order.
* Read/discard entire line at once with std::getline
* Do the D->E conversion while reading nodes.
* Remove unused D_to_e function.
Cleaning up/refactoring code that is no longer used

* Delete count_nodes, count_elements, and beginning_of_dataset functions.
* Remove order_of_datasets vector.
* Remove need_D_to_e flag.
* Rename node_{in,out} and element_{in,out} functions.
* Remove unused _n_nodes, _n_elements members.
* Renaming dataset labels.
* Replace the assign_nodes vector with a map.
Make the MeshData object optional in the UNVIO reader.
Final clean-up of comments and removal of debugging code.

* Noting authorship across multiple repositories over more than 10 years.
* Removing unused _ds_position and clear() member
* Removing sprintf
Merge pull request #303 from libMesh/unv

Enhance the UNV reader