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.