mst: optimize deserializeNodeData allocs, isValidMstKey CPU
isValidMstKey used regexp, which isn't super fast in Go. Write it out
by hand instead, making it much faster:
│ before │ after │
│ sec/op │ sec/op vs base │
IsValidMstKey-8 276.15n ± 1% 27.49n ± 4% -90.05% (p=0.000 n=10)
Also, allocate less in deserializeNodeData, reusing a scratch buffer
between entries and only doing the []byte to string conversion once.
authored by