When loading a system with non-primary name (e.g. foo/bar),
load the system with primary name first (e.g. foo), but avoid infinite loops by checking for system being defined. This should help with Quicklisp and other extensions that define functions for *system-definition-search-functions* so they don't have to pay special attention to primary name canonicalization unless they really want to. Also, use the ensure-gethash utility in a few more places.