Add a rudimentary project cache.

Previously we were frequently reloading the same project object
many many times during a single page load.  This reduces the number
of loads to one per page load while (I hope) avoiding cache-invalidation
complications.

Change-Id: I09284e3ed29ec131478ba753ca9f9ac5a9431a45