Fix bug: return results of InvariantChecks should always serializable
Add integration test for MCSFinder
Rearchitect RPC forker: add TaskRegistry, child is now the RPC server

Used to be backwards: parent was the RPC server. Depended on passing the
closure down to the child via fork(). This won't work for RemoteForker().
Really, the child should run the RPC service, and the parent should invoke the
child.