Add restore worker

A restore worker was added to keep track of restore status.
It is to be used for the MachineAgent in cmd/jujud to know when to
restrict login and for the final step of restore to communicate
a succesful run.
I prefer to put the ifs in statements like this on their own. It's not a big deal, though.
Something like this:

```go
err := restoreInfo.FindId(currentRestoreId).One(&doc)
if err == mgo.ErrNotFound {
    return nil, nil
}
if err != nil {
    return nil, errors.Annotate(err, "cannot read restore info")
}
return &doc, nil
```