Consistently use synchronous dispatching.

All other MessagePump subclasses are dispatching synchronously, except RequestMessagePump. This was causing messages to be Completed even though the handler could potentially fail. If we want async dispatching we should model the Complete/Abandon as Continuations.
Exception details as Custom Properties

Simple unwrapping and adding of exception details to any abandoned messages so the detail is available for future inspection.