Replace the legacy backups implementation with a new one.

The new implementation is refactored to fit to the new backups approach of storing the backups in env storage (along with metadata in mongo). This is the final large patch in the backup series (the remaining ones are much smaller).

The next 2 patches in the series:
https://github.com/ericsnowcurrently/juju/pull/3
https://github.com/ericsnowcurrently/juju/pull/4
I don't really like this.  See the logs is never a good error message.  At worst, we should check to see if there's only one error and return that one.  But I think that with multiple errors it might be better to just concatenate the error messages into a single error and return that, and let someone higher up log the failure, since you'd have to somehow correlate the higher-up error log with these log messages, which is likely difficult to do.