proof-of-storage changes

The `StorageProof` struct is now more widely used in proofofstorage.go. It has been modified slightly to use a slice of pointers, since `foldHashes()` requires that `HashStack` contain nil "dummy" hashes. This also means that the task of calculating the "base" hash has been offloaded to `foldHashes()`.

More importantly, the expected hash used in `VerifyStorageProof` is now taken from `Wallet.SectorSettings.HashSet[sibling]` instead of being read from a file. This cleans things up quite a bit (this PR is net negative).