Changed the machinery behind mapping
- Removed the 'pore.map' and 'throat.map' property completely.  This information was already available in the 'labels' in a different form, so the mapping now uses it.  I never liked introducing a new 'required' property...so its gone
- There is now a private method called _get_parent_indices that looks up which pores in the parent network (or fluid) correspond to the local pore numbers
- This method is called in the map_pores and map_throats method, which lets you map between ANY two objects
- Does not work for subnets yet.
Working mapping still
Created a private version of tomask that accepts element and locations.  The public version calls this now.
I "think" the map functions now works the way I want.  No use of 'map' dictionaries, not use of any extraneous parent_indices functions.   And the logic is tight too.
Not sure if this is a good idea or useful even, but you can now use the object.name and get a boolean list equal to pore.all or throat.all returned.  This was useful for doing pn.pores queries, using object names instead of just 'all'.  It uses a bit of magic in the background so may cause more confusion than it's worth.
- This commit is reversible with no ill effects.
Fixed small bug in mapping that let empty lists pass.
- You can get an empty list only if you select return_mapping=True
Also changed the logic in trim to accommodate this change.
- When trimming an entire geometry, the list of target pores will be empty so need to use the return_mapping option
renamed clone to clone_pores to avoid confusion with clone_simulation and clone_object in misc
Clean ups of trim
Fixed typo in Air's viscosity coefficients
Fixed bug in mapping that let function return when non source locations were sent
Updated tests for mapping, now checks that it fails correctly