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.
Since each processing attempt has an id, perhaps we can use that to solve the issue you mentioned last week where we only get the latest attempt?

Ie one "row" in this index per processing attempt?