Return a channel from MultiRaft.{SubmitCommand,ChangeGroupMembership}

This channel can be used to wait for the proposed action to be
committed.

Adding this wait to TestMembershipChange demonstrated that the test
wasn't actually doing much. Some of the issues have been fixed
but the test is disabled until we make some decisions about the
group membership protocol.

Are we at all worried about creating many of these closures? How expensive is it to create one versus sending in a struct and having the channel receiver do a type switch?