Improving kv test coverage

* Adds unit tests to kv/local_kv.go and kv/dist_kv.go
* Generalizes gossip network simulation so that it can be used in tests which require gossip networks
* The unit tests for kv/dist_kv found a user permission bug which led to false positives. This is fixed in storage/prefix.go.

I'm brand new to Go, so I would appreciate any advice!
Might want to run the simulation with pprof and see if this method is taking too many cycles. It's called from an inner loop. For 100+ node simulations, this O(N) search could start being ugly and could benefit from SimulationNetwork creating a reverse mapping from addr -> *SimulationNode. Not a big deal, but if you're new to Go, would be a great chance to check out how to use pprof.