Properly handle backend add.

* validate backend before adding,
* warn with proper msg if failed backend already added
Fix add_backend user handling.

We need to make sure that the user dict is updated before validating.
The same stands for removing the backend after checking that libcloud
cannot connect.