Okay, all unit tests passing correctly now.  Solved the "Prelude.chr: bad argument" problem that was crashing the cluster test.  Typically, this was happening in the follower's doRedirect function, but also sometimes happened in the leader's doServer (they deserialize identical structures).  The problem lies in misuse of courier's RPC--although perhaps courier define RPC a little better to avoid this, not sure yet.  Basically, the test for whether for hearing a message was based on whether the message could be decoded as the expected type. But, RPC fully decodes a message *then* checks the method to determine if the message should be delivered.  But, if the message isn't actually of the expected type, that coding could fail (and in this case, with an error from pure code).  So the fix (for now) is double-encoding, so that courier's RPC can safely decode the outer request, check the method type, then if the method's match the expected type, the application (not courier) can decode the inner arguments itself.

Will have to do similar double-encoding of RPC responses, but not yet ready to work through that.  Basically, it could be easiest if all such responses were simply made to have identical types (although I'm not yet sure that is doable).