Handle AutoReconnect errors.

AutoReconnect errors are not being handled and so, propagated to the client.

This patch adds a safe_call decorator. The purpose of safe_call is to catch
ConnectionFailure and raise a ConnectionError instead. Future patches will make
the transport catch ConnectionError and handle it correctly instead of
propagating it to the client.

All storage back-end should support this.

Fixes bug: #1169821

Change-Id: I523232a7cefbd00082447403ceb3abada9af6db3
Merge "Handle AutoReconnect errors."