Implement Clone for Error types + propagate error to all message streams
This adds Clone
impl to all our Error types and therefore allows us to broadcast the Result<Arc<Messsage>>
to all message streams and eliminates the need to keep a separate unicast error channel that only send the error to one of the lucky streams.