cachePublicProjectData function is added to project logic.

It manages caching policy for public project data. Please note that
data for inactive program is valid longer than data for active program
because it is much less likely that this data will ever change.

Also, a few unit tests are added.

Change-Id: Ib7976f6323282ecbf5b031b00cedb65c14e6824c
2 files changed