Reviewer Rob - Async replication

Random reviewer selection, I chose you because you helped raise issue #11 which this fixes.

The main change is to `replicator.cpp` where we now do replication in a dedicated thread so it won't block the main thread.

Confirmed UT passes and tested live to confirm it resolves the deadlock.