remove genesisScript
add BuildStorageProof and TestStorageProof
move buildProof to its own function
replace buildMerkleRoot with foldHashes
fix foldHashes (thanks David)
small but vital bug fixes
make foldHashes iterative

Also change instances of []*siacrypto.Hash to []siacrypto.Hash
proofStack length no longer needs checking
add TestMerkleEmpty and fuzzing
change Merkle tree construction scheme

David and I were constructing Merkle trees differently.
His looked like this:

                          |
                      ----+----
                     |         |
                 ----+----     |
                |         |    |
              --+--       |    |
             |     |      |    |
            -+-   -+-    -+-   |
           |   | |   |  |   |  |

While mine looked like this:

                       |
                 ------+------
                |             |
              --+--         --+--
             |     |       |     |
            -+-   -+-     -+-    |
           |   | |   |   |   |   |

We've switched to my way for now, simply because it makes
the buildProof algorithm simpler.

Dummy nodes are now inserted in the proofStack to allow
for easy implementation of foldHashes. This is a bit gross,
so in the future we may switch to a different scheme that
doesn't required dummy nodes.
Merge pull request #183 from lukechampine/storage

Proof of Storage