Cache category listing & clear cache on any category changes.

# Changes
 - Cache category list so it doesn't require a query on each page load.

For review: @angaither