Expose a top-level abstraction for all the backups functionality.

This patch adds a top-level backups abstraction.  It also exposes the backup creation functionality through a method.

The PR that will follow this one:
  https://github.com/ericsnowcurrently/juju/pull/4
I'll argue that it mitigates complexity. :)  The only thing of which the rest of juju needs to be aware is the stuff in state/backups/backups.go.  The abstraction forces the actual backups implementation to be hidden away, giving us more flexibility in how it adapts to new situations.  It brings the entire backups functionality into a concise structure in a single file, making that functionality significantly more discoverable.

If this were just create and restore then I'd actually agree a separate backups abstraction isn't worth it.  However, create and restore are only some of the backups functionality we need (see the updated doc/backup_and_restore.txt).