cleaning up search path manip

Unshimming in own function
Zero env reset on search path changes
more clean-up of unnecessary logic in new structure
further zeroenv integration
more robustness around shimming/unshimming

Also, failures don't necessarily cuase stops anymore, as that should be
handled by the unitize code anyway.  Failure to shim shouldn't prevent
unitizer from proceeding.
global obj cleanup, and minor bugfix
library,etc. shimming working mostly

Haven't tested trimming paths or restoring, but
actual adding / removing packages works, and history
seems to be doing stuff right, and the search path
checks pass.
basic restore search path working