Praefect datastore should use an async API
Right now, praefect's datastore API requires polling to fetch new items. To be more efficient, praefect should instead expose an async API that utilizes either a callback or channel to communicate new replication jobs are available. This could be modeled after Postgres' message notification bus for table updates.