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!
I ran pprof on the simulation framework (size=huge), and the below were the most expensive gossip methods. This method didn't even show up. So unless I ran it incorrectly, I think the runtime is okay?

```
       0   0.0% 100.0%        1   0.1% github.com/cockroachdb/cockroach/gossip.(*Gossip).Start
       0   0.0% 100.0%        1   0.1% github.com/cockroachdb/cockroach/gossip.(*server).start
       0   0.0% 100.0%        2   0.1% github.com/cockroachdb/cockroach/gossip.NewSimulationNetwork
```

The commands I used were (after setting up profiling output to be in cpu.pprof)
```
go build -o simout ./simulation 
./simout -size=huge
go tool pprof --text simout cpu.pprof
```