WIP: Refactor datastore package structure, adding cache
This MR adds an in memory caching layer on top of the datastore. The cache gets busted through a postgres notication via triggers that notifies a channel whenever one of the praefect tables are changed (update, insert, delete) and invalidates the entire cache.
This is a little coarse, but the benefit is that it's a very simple cache.
fixes: #1793 (closed)
Edited by John Cai