FakeCommunicator checkpoint

This is now at a semi-working stage (running examples successfully with the default configuration, detecting bugs at compile time with --disable-default-comm-world), if you want to merge it in to your branch, Ben.