Distributed, replicated Silo on VR
This pull request implements a three-phase distributed and replicated Silo on top of VR (but not IR). In addition to the additional functionality added, I also did some minor refactoring here and there (e.g., changed some raw pointers to unique_ptrs, clang-formatted some code, etc).