Yet another app loading branch

Make it possible to invoke app cache APIs at import time. Currently this is almost impossible because everything triggers populate() which creates import loops. Eventually these APIs will replace iteration on INSTALLED_APPS, and only then we can change the format of INSTALLED_APPS.

WIP.