Add restoring root

Add restiring root and refator prepare/finish restore in machine.go
Improved comments and tests for restoring root
Go 1.4 version of `go vet` workaround

  In go1.4 `go vet` incorrectly chokes on the call to
  `logger.Logf(loggo.INFO, fmt, args...)` because the `loggo.INFO` is an
  `iota` not an expected string.

  The error message was:
    `audit/audit.go:30: constant 3 not a string in call to Logf`
  which was confusing, but the `iota` value of `loggo.INFO` is `3`

  This fix sticks to the intent of the `audit.Audit` func, but uses
  `logger.LogCallf` which both bypasses the `go vet` check, and reduces
  one extra method call because `Logf` was previously calling `LogCallf`
  in turn.
Merge pull request #1305 from perrito666/restore_01_restoring_root

Add restoring root

Add restoring root and refator prepare/finish restore in machine.go

(Review request: http://reviews.vapour.ws/r/619/)
Merge pull request #1314 from johnweldon/go-vet-1.4-workaround

Workaround for go vet error with current version of go vet

  In go1.4 `go vet` incorrectly chokes on the call to
  `logger.Logf(loggo.INFO, fmt, args...)` because the `loggo.INFO` is an
  `iota` not an expected string.

  The error message was:
    `audit/audit.go:30: constant 3 not a string in call to Logf`
  which was confusing, but the `iota` value of `loggo.INFO` is `3`

  This fix sticks to the intent of the `audit.Audit` func, but uses
  `logger.LogCallf` which both bypasses the `go vet` check, and reduces
  one extra method call because `Logf` was previously calling `LogCallf`
  in turn.

(Review request: http://reviews.vapour.ws/r/630/)