Make Exodus reader respect the numbering in elem_num_map.

Miscellaneous improvements/changes:
* The temporary exodus_id_to_mesh_id map is not needed if we preserve the Exodus numbering.
* Move writing of elem_num_map outside loop over blocks, this way we only need .
* Use subdomain_id_type and dof_id_type where applicable.
* Removing unnecessary elem_num_map_out vector.
* Minor documentation, reformatting, and other fixes.
* Use the class member elem_num_map rather than creating a function-local variable.
* Can no longer assert that mesh.n_elem() == nelem_last_block, added explanation.
* Properly map element IDs in sideset lists.
Merge write_elements() fixes into write_elements_discontinuous()
but note:
* I don't have code that tests write_elements_discontinuous()
* I don't know how write_elements_discontinuous() is supposed to differ
  from write_elements()
* It doesn't look like it's writing out the elem_num_map correctly:
  it gets overwritten for each block.
Merge branch 'exodusII_elem_map'