Added time exchange, made EndpointSync useful

EndpointSync is now a generic that produces a MessageReceivedEventArgs
(or subclass such as TimeReceivedEventArgs) on WaitAndReturn.