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.
That's a solution but then the benefit of using an index seem small compared to the cost (inherent complexity of indices, some complexity added because we need to wait for non stale results).