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 be a slightly better test if you were to add the info to another node's gossip instance (not kv's) and then have the simulation network run until kv.getFirstRangeDescriptor() return the descriptor and no error, up to some maximum number of cycles.

	maxCycles := 10
	n.SimulateNetwork(func(cycle int, network *SimulationNetwork) bool {
		desc, err := kv.getFirstRangeDescriptor()
		if err != nil {
			if cycle >= maxCycles {
				t.Errorf("could not get range descriptor after %d cycles", cycle)
				return false
			}
			return true
		}
		return false
	})