fix compute_nodal_normals() for degenerate elements, check for zero normals

- simplify by using field.get_mapping() instead of custom CMapping
- clean up