Added Restore as a function translated to Go

I think that there is much room to add unit testing here so suggestions are very welcome especially in that side
Restore, formerly a mix of go and bash was rewritten
completely in Go.
Restore function will take a backup and:
* Replace the existing mongo db with backed up one.
* Replace config files.
* Re-create mongo's replicaSet with the new server
* Change the state server address in all agents
Is this really necessary? I think we can safely assume that if MkdirAll returns successfully, the directory is there.