App list caching

The idea is to have ApplicationInfoEx cache its own instances, then an instance can cache restriction state and we can safely invalidate that cache when necessary.

Things to check/remember:
1. appInfo instances are not copied, references only are passed around.
2. thread safety for permission/restriction cache access.

Possible developments
1. If an instance knew when it was attached to a view, it could update that view instantaneously, eliminating the need to rebuild the app list after an import/fetch/toggle action.