Made generic_ptr::monitor a little less general (always uses a generic_ptr::shared to hold its mutex) but easier to use (permits reasonable default value for mutex pointer).