support for patching future loaded modules

Since the safest approach is to only ever have a single patch module loaded at any given time, we must be able to load a patch module which contains patches for a module which hasn't been loaded yet.  This PR implements that by using a module notifier function to detect when a to-be-patched module is being loaded and patching it before it goes live.