Exposed a MessageFailed event for external integrations

WIP
Moved MessageFailed, ExceptionDetails and FailureDetails contracts back to internal namespace and created an empty/placeholder MessageFailed public contracts.
Shouldn't this throw or return false to cause us to retry?

If not we might not send the event out?